kkn1960
Новичок
Видите ли уважаемый [ B]~WR~[/B] - у меня точно такой же подход.В общем, сам большой кровью пришел к такому варианту:
Делаем небольшой абстрактный класс, который реализует только базовую функциональность: показ грида, постраничный вывод, поиск, сортировка, простейший crud. От него наследуем классы конкретных гридов.
Если грид на 100% стандартный, то указываем только имена колонок и SQL запрос или таблицу. Всё с ходу работает.
Если есть что-то нестандартное, то перегружаем соответствующие функции и пишем это прямо в коде.
Например, если нужно сохранять дополнительный параметр при Insert'е, то перегружаем функцию вставки.
Если нужно как-нибудь хитро форматировать картинку, то перегружаем parseRow и явно это кодим.
Самый главный профит от этого подхода наступает в тот момент, когда у вас становится 100+ гридов.
Во-первых, правки в одном гриде не вызывают изменений в других, как это обязательно будет происходить с плагинами.
Во-вторых, когда вам нужно поправить чужой грид, то не надо думать о том, какой код где лежит. Ибо весь custom code 100% лежит в классе грида и больше нигде.
При вводе спецификаций разработчику предоставляется возможность вместо стандартного компонента (класса) ввести имя своего компонента (класса) . При создании компонента сначала считывается файл спецификаций компонента, в котором одним из атрибутов является название класса и фреймворк создает именно класс, указанный в спецификации.