Yuriy_S
-=PHP-Club=-
вопрос по View
Решил написать новый проект с применением MVC.
Model, View, Controller - разные файлы (классы).
View используется как обертка для работы со Smarty (стандартный набор методов - assign, set, get, render, display, etc..)
Так же используется класс Router - разбирает URL, загружает нужный контроллер и инициализирует указанное действие.
Каждое действие, в котором требуется отображение (возврат) каких-либо результатов клиенту использует отдельный шаблон (подшаблон).
Суть вопроса: как должна правильным образом выглядеть схема обработки результатов, полученных методами View::render('any_template.tpl') в контроллере? Т.е. задача сводится к тому, что существует некий базовый шаблон сайта - index.tpl, в переменные которого должны асигниться результаты от вызовов типа View::render('tpl') в экшенах контроллера.
Пока в голову приходит мысль, запихивать результаты обработки "подшаблонов" в что-то наподобие Registry в виде ассоциативного массива (переменная_шаблона => значение), затем в объекте Router после инициализации контроллера и выполнения экшена обрабатывать этот массив (асигнить переменные в шаблон index.tpl) и вызывать метод View::display('index.tpl'). Таким образом можно полностью избавиться от обработки "лишних" частей шаблона в конкретном экшене контроллера. Можно асигнить и сразу в Smarty, но тогда нужно будет постоянно помнить о возможности конфликта имен переменных.
Может написал несколько запутанно, но смысл вроде бы правильный.
Решил написать новый проект с применением MVC.
Model, View, Controller - разные файлы (классы).
View используется как обертка для работы со Smarty (стандартный набор методов - assign, set, get, render, display, etc..)
Так же используется класс Router - разбирает URL, загружает нужный контроллер и инициализирует указанное действие.
Каждое действие, в котором требуется отображение (возврат) каких-либо результатов клиенту использует отдельный шаблон (подшаблон).
Суть вопроса: как должна правильным образом выглядеть схема обработки результатов, полученных методами View::render('any_template.tpl') в контроллере? Т.е. задача сводится к тому, что существует некий базовый шаблон сайта - index.tpl, в переменные которого должны асигниться результаты от вызовов типа View::render('tpl') в экшенах контроллера.
Пока в голову приходит мысль, запихивать результаты обработки "подшаблонов" в что-то наподобие Registry в виде ассоциативного массива (переменная_шаблона => значение), затем в объекте Router после инициализации контроллера и выполнения экшена обрабатывать этот массив (асигнить переменные в шаблон index.tpl) и вызывать метод View::display('index.tpl'). Таким образом можно полностью избавиться от обработки "лишних" частей шаблона в конкретном экшене контроллера. Можно асигнить и сразу в Smarty, но тогда нужно будет постоянно помнить о возможности конфликта имен переменных.
Может написал несколько запутанно, но смысл вроде бы правильный.