Автор оригинала: Фанат
Ребят, а как в ваших крутых шаблонах реализуется такая вещь, как выбор в форме даты с помощью трёх селектов.
и отметка выбранной из базы/текущей.
соответственно, контрольное задание - поменять шаблон вывода с "в линию" на "в столбик" и порядок следования инпутов с "d m y" на "y m d"
Наврено как и в обычных 2х уровневых системах - просто в 3ёх уровневых системах (бизнес-логика, логика отображения, шаблоны) сам код будет IMHO разделён так:
1. Бизнес-логика (PHP) - выборка данных, вычисления на основе этих данных
2. Логика отображения (PHP) - подготовка данных на основе классов/функций бизнес-логики, тут содержится деление на несколько столбиков, проверка настроек отображения данных, выбор, например, имени CSS файла и т.д.)
3. Шаблоны (не обязательно PHP - любой язык шаблонизаторов) - отображение данных, подготовленных в 2. Наверно должны содержать только логику перебора списков, и, может быть, условие для прятания невидимых блоков)
В итоге, за расположение отвечает 3. За выделение требуемых данных - 2. За общие функции выборки данных и связи - 1.
Нужно внешний вид поменять - правим 3.
Нужно какие-то новые данные выбирать для отображения (или как то по другому их выбирать), не изменяя логики - правим 2 + 3 (или только 2).
Меняем логику - править всё.
Соответственно для приведённого примера (поменять шаблон вывода с "в линию" на "в столбик" и порядок следования инпутов с "d m y" на "y m d") ничего нового вибирать/вычислять не надо, значит просто шаблон правим.
В принципе ничего не меняется по сравнению с 2я уровнями. Только логика подготивки данных (то самое деление данных на столбики и ряды) вынесено из шаблонов в отдельный уровень на PHP.
HelperObjects - эээ... да, это вроде что то типа того, что я имел в виду. Когда данные в View подготавливаются, а он сам использует эти HelperObjects для выборки данных и выполнения над ними вычислений.
Только не надо сразу тухлыми помидорами кидать
Я с этим только столкнулся и пытаюсь понять, даёт ли это что хорошего или нет.
-~{}~ 20.05.05 15:22:
Кстати, плюс такого подхода - использовать разные 2 с одним и тем-же 3. И наоборот.