Привет кого не видел!!! Есть вопрос. Допустим имеется шаблон Код (Text): <?php foreach($Users as $User) { ?> <tr> <td>$User->Message</td> </tr> <?php } ?> и код : PHP: <?php $Users = Class.GetUsers(); $View = new View('usermessages.tpl'); $View->Assign('Users', $Users); $View->Show(); Есть функция GetHTML(), которая обрабатывает BBCod-ы или даже просто htmlentities(), которую как бы надо вставить в шаблон типа <td>GetHTML($User->Message)</td>, либо в класс пользователя... Куда её засунуть не пойму - и там она не нада, и там... Есть мнение, что надо в $View но чтото ума не приложу как? ps: $View по типу http://www.php.ru/forum/viewtopic.php?t=15269
Имхо, включи функцию во View. Все равно она отвечает только за вывод, я так понимаю. Где ж ей еще быть тогда. Если используется часто, то можешь сделать расширение на Assign, типа такого: Код (Text): <?php foreach($Users as $User) { ?> <tr> <td><?=$User->Message?></td> </tr> <?php } ?> PHP: <?php $Users = Class.GetUsers(); $View = new View('usermessages.tpl'); /** * HTML_ENTITIES - указывает на необходимость обработать определенной функцией * если таких функций много, то реализуй как callback */ $View->Assign('Users', $Users, HTML_ENTITIES); $View->Show(); А вообще, можно сделать по типу ZendFW - ViewHelper и вызывать его в шаблоне, ничего страшного в этом нет. P.S. А нужен ли во вьювере весь User, если мы выводим только Message? Или тут только часть от более общего?
я вкратце пример привел, а вообще User c ActiveRecord и как из твоего примера я пойму, что надо именно такието поля обработать, он же мне их подгружать будет, а если подгрузить что не надо???
Не понял твоего вопроса... Я имел ввиду, что шаблон у тебя называется "usermessages.tpl". Я предположил, что он нужен только для вывода сообщений пользователя/пользователей. В этом случае, логичнее передовать во вьювер не массив с пользователями, а чистый массив с сообщениями. Тогда и обработку дополнительной функцией организовать легче. Потому что PHP: $View->Assign('Users', $Users, HTML_ENTITIES); по сути мало информативно. Ведь View все равно не знает, что функцией нужно обработать именно $User->Message.
вот это я и имел в виду. Скорее всего прийдется делать обвертку-делегатор над $Users и ее с внедренным $Users передавать в шаблон...
Пробуй. А можно в класс Users добавить метод getMessages(), который будет возвращать чистый массив сообщений?
причем тут код, еще и обрывки я пример идеологии привел, а не пример кода... Черт, а никто не знает как попроще можно сделать. Может забить да формировать массивы для шаблона из массива класса, ведь в классе же нету ссылок на сообщения, а они тоже могут понадобиться, и в этом процессе вывод и обрабатывать?