Мне непонятно, почему ты рендеринг модуля целиком в случае нормальной модульной системы записал в «грязные хаки активных шаблонов» в соседней теме.и практическое - заэмбедить ведь можно только шаблон. Но ведь надо откуда-то ещё достать данные для него?
Неужели вещи, которые я говорю - настолько непривычны народу?
Учитывая постулат о том, что любой мало-мальский сайт просто обвешан виджетами, у меня только одно предположение - все тупо делают виджеты старой доброй лапшой, заморачиваясь на шаблоны только если для "основного контента"?
Ну, или решая большинство задач активным шаблоном/ ещё чем-то + для отдельных случаев грязные хаки.
$this->set('sidebar', Request::factory('module/action/params')->execute())
причём сам текст, разумеется, может быть переменной?Шаблон викторины сделает {% block title %}{{ parent() }} — выкторина со стопицот призов {% endblock %}
Это где пишется?PHP:$this->set('sidebar', Request::factory('module/action/params')->execute())
Когда я вижу такие конструкции и рядом с ними утверждения о непонятности верстальщику твиговских тэгов, мне делается смешно.$this->set('sidebar', Request::factory('module/action/params')->execute())
Разве такая конструкция отработает во вложенном шаблоне? Ведь викторина, в данном случае, это просто widget основного шаблона.Шаблон викторины сделает {% block title %}{{ parent() }} — выкторина со стопицот призов {% endblock %}
Все эти страницы строятся в едином дизайнеhttp://habrahabr.ru/ - лента
http://habrahabr.ru/post/144940/ - пост
http://habrahabr.ru/events/coming/ - события.
Ну, с этим мне спорить трудно.Вот тут как раз наследование и полезно.
В базовом контроллере страницы aka view controller. Я это делаю на последнем этапе, непосредственно перед вызовом шаблонизатора - определяю набор общих для всего переменных.Где идёт вызов контроллера, который заполняет блок залогиненого юзера?
# фреймворк
protected function displayTemplate() {
try {
$this->assignCommonViewVars();
$this->View->parseTemplate( $this->assembleTemplate() )
->displayTo($this->Response);
} catch (Exception $e) {
// .....
}
}
protected function assignCommonViewVars() {
// совсем общая фигня, типа
$this->View->CURRENT_PAGE->assign(get_class($this));
}
# в приложении
protected function assignCommonViewVars() {
parent::assignCommonViewVars();
// $this->View->..., общее для данного приложения
}
# ну и еще уровни наследования могут быть для отдельных страниц
Я такого не утверждал никогда.Когда я вижу такие конструкции и рядом с ними утверждения о непонятности верстальщику твиговских тэгов, мне делается смешно.![]()
В контроллере.Это где пишется?
public function after()
{
parent::after();
$this->template = View::factory($this->template);
$this->template->set('request', $this->request);
$this->template->set($this->vars);
$this->template->display();
}
Конечно отработает, оно для того и было придумано, практически, соль твига — наследуемые блоки.Разве такая конструкция отработает во вложенном шаблоне? Ведь викторина, в данном случае, это просто widget основного шаблона.
Хочется (мнесуть паллиатив и проблему не решают.
Как мы уже обсуждали ранее, четких границ между M, V и C не существует. Есть моменты, которые можно отнести как к одному, так и к другому. Выбор показывать ли блок ленты навостей на новостной странице тоже не однозначно относится к бизнес логике или отображению. Положа руку на сердце, а бы тоже отнес это к БЛ. Но!А по моему мнению, то, какие блоки показывать на странице - это именно бизнес-логика.