Absinthe
жожо
Нашел на тролятнике статью http://habrahabr.ru/blogs/php/134421/ , где была ссылка на http://phpti.com/ - PHP-шаблонизатор с блоками в 300 строк.
Извини не правильно тебя понял. Я думал ты имел введу чтото вродеТак и есть.
Вот пример:
//controller
$this->view->user_link = $user->permalink();
//view
<a href="<?=$this->user_link?>"></a>
Вот он! Золотой Граал! Спасибо!Нашел на тролятнике статью http://habrahabr.ru/blogs/php/134421/ , где была ссылка на http://phpti.com/ - PHP-шаблонизатор с блоками в 300 строк.
— не извиню.baev
Извини но чем это не теория?
Угадаю-ка, фамилия автора книги начинается на букву К?В книге активным шаблоном назвали шаблон с логикой отображения, а не просто нарезку непонятных кусков, которые потом сшиваются в контроллере(который вовсе не контроллер, а каша из контроллера и вида)
Шутишь.даже отсюда ясно, что «шаблон», прежде всего, это — обобщение практики, реализованное в инструменте.
Согласен. Но в этой теме об инструментах начал говорить только ты в последнем сообщении.Теоретизирование о том, какой инструмент лучше применять «вообще» — по-моему, это не «теория программирования».
Мне показалось, что Шлосснейгл, сейчас глянул - вроде не он. А всяких К. я не читаю.Угадаю-ка, фамилия автора книги начинается на букву К?
в чем тут активность шаблона? чем это отличается от типичной схемы - получения инстанса модели в контроллере и отдачи во view результата работы findLast()?Ragazzo
сейчас под рукой нет кода, но типичный вывод блока последних 10 новостей, 5 последних видео, делаю так.
В экшине тяну основную центральную часть, если нужно. А доп. блоки по возможности так как описал выше. Хотя, может быть и полностью пустой экшин, а данные тянутся в шаблоне.PHP:<?php $oNews = new Model_News(); $oNews->findLast(10); ?> <ul> <?php foreach($oNews AS $news) { ?> <li><?=$this->escape($news['title'])?></li> <?php } ?> </ul>
Завтра сброшу пример.
Если параметр влияет только на вью, то почему бы и нет? Я не готов прописывать какой-нибудь мелкий незначительный параметр в трех-пяти местах, чтобы соблюсти канон. А иначе бюрократия получается, а не программирование.К примеру, самый простой путь похерить активными шаблонами MVC - дёргать из шаблона параметры запроса
В том что данный код представления сам решает какие данные ему нужны и как их разместить на странице, в отличии от пассивного который только размещает данные которые ему скормили.в чем тут активность шаблона? чем это отличается от типичной схемы - получения инстанса модели в контроллере и отдачи во view результата работы findLast()?
Скажи мне...
Что касается правильного сочетания MVC с шаблонами, то в моём понимании идеальный вариант, это когда есть отдельный View объект, агрегирующий в себе объект шаблона (если тот представлен объектом, например смарти) и содержащий в себе логику отображения, а так же ограничивающий для шаблона область видимости некоторым своим контекстом.
Этот объект умеет дёргать модель и передавать в шаблон (пассивный, без кода вообще, только с тегами условий, циклов и обращения к переменным контекста шаблона) данные. Вот такую модель сложно испортить чем-то, имхо.
class Foo {
public function bar() {
$this->smarty->cart = UserModel::getShoppingCart();
}
}
то мой Foo это вью, а у 99% людей\фрейморков это контроллер.Это объект который умеет дёргать модель и передавать в шаблон (пассивный, без кода вообще, только с тегами условий, циклов и обращения к переменным контекста шаблона) данные.
EditKrishna
Покажите мне код.
class Home extends Controller {
public function index() {
echo View::factory('Home')->render();
}
}
class Auth extends Controller {
public function login() {
$errors = array();
$v = Validation::factory('LoginForm');
if(!$v->isValid($this->request->post())) {
$errors = $v->getErrors();
}
echo View::factory('Login', $errors);
}
}
class Auth extends Controller {
public function login() {
$view = View::factory('Login');
//validate form
$view->form_errors = $errors;
//more $view->something = something
echo $view->render();
}
}
В том же самом django это назыается видом.а у 99% людей\фрейморков это контроллер.
Почему, кто знает? Почему аналогичная сущность зовется либо видом, либо контроллером в зависимости от фреймворка, даже если эти фреймворки имеют идентичную архитектуру?Фишка в том, что на самом деле контроллер - это то, что в веб-фреймворках именуют front controller.
А то, что именуют контроллером - это как правило выполняет функции View.
Да ну нафиг. Просто часто контроллер вырожденный, всё что он делает - передаёт управление view.Фишка в том, что на самом деле контроллер - это то, что в веб-фреймворках именуют front controller.
А то, что именуют контроллером - это как правило выполняет функции View.![]()