Ну, я упростил всё по максимуму. Должо быть вот так (для ZF):Не очень понял, что возвращает find(). Объект класса Good? Но это разве не модель? А почему тогда присваивается переменной $view? Откуда в $view->good берется метод getDescription()?
class GoodController extends Zend_Controller_Action {
public function indexAction() {
$id = $this->getRequest()->->getParam('id');
$this->view->good = Mapper_Goods::find($id); // возвращает Model_Good
// или $this->view->goods = Mapper_Goods::fetchAll() - возвращает массив содержащий Model_Good
}
}
А, ну, вот к тому всё и свелось, что во вью нечего делать объектам. Там должны быть только скалярные типы, ну, и может быть array. И без шаблонизатора никак. А, что плохого в объектах во вью?Лично я считаю, что модели делать во вью нечего.
поэтому
PHP:Good { public static find() {} }
PHP:GoodController { $id = $request->getId; $data = Good::find($id); $data['link'] = $this->makeUrl($id); $data['pic'] = $this->makePic($id); $view->setTemplate('good.tpl.php'); $view->setRaw('description'); return $data; }
PHP:<title><?= $title ?></title> <body> <div id="good-<?= $id ?>"> <a href=<?=$link?>><img src=<?=$pic?>></a> <span><?= $title ?></span> <span><?= $price ?></span> <p> <?=$description ?> </p> </div> </body>
По двум причинам:А, что плохого в объектах во вью?
echo '<b>Hello!</b>';
Ну, у модели нет метода save, это метод маппера:Можно сделать что-то, не предназначенное виду, типа $user->setName('XXX')->save()
$good = new Model_Goods;
$good->setTitle('XXX');
$mapper = new Mapper_Goods;
$mapper->save($good);
Это дело 10-е, в ActiveRecord есть, например. Не суть.Ну, у модели нет метода save
Мне затея кажется глупой, особенно учитывая необходимость рекурсивного прогона в неведомых структурах данных.Absinthe, туда-сюда гонять экранированный/оригинальный текст?
Как это неведомых? Модель четко знает, какие данные и для чего она генерит в соответствиии с ТЗ. Так что не надо ничего никуда взад-вперед эскейпить и рекурсивно проходить.Мне затея кажется глупой, особенно учитывая необходимость рекурсивного прогона в неведомых структурах данных.
Ну раньше про наследование шаблонов так же говорилиAbsinthe, PHP вам не предоставляет других возможностей.
Мой шаблонизатор читать ТЗ неумеет. Научите?Как это неведомых? Модель четко знает, какие данные и для чего она генерит в соответствиии с ТЗ. Так что не надо ничего никуда взад-вперед эскейпить и рекурсивно проходить.
Не надо передергивать. Вопрос был "модель-ТЗ", а не "модель-верстка".С. нет. С чего модели что-то знать о верстке?
Предлагаешь в ней определить безопасные поля и опасные, и дергать их через магические методы?
с такого.Возьмем например задачу выдачу сообщения пользователе на форуме. Разрешать ли тэги в нем, решает модель. Фильтрует вредные тэги -- модель. А решать, эсекейпить ли сообщение перед выдачей будет шаблон? С какого хрена?