Доброго времени. Речь пойдёт о Smarty 2. Есть php-файл с кодом: Код (Text): ... $smarty = new Smarty(); $smarty->display('sometpl.tpl'); Файл sometpl.tpl: Код (Text): {php} class someClass { ... public $arr = array(); ... } $object = new someClass(); {/php} Задача - сделать так, чтобы объект $object со всеми своими свойствами и методами оказался доступен во всём остальном шаблоне sometpl.tpl, вне {php}{/php} . Т.е., например, чтобы где-то в sometpl.tpl можно было написать: {foreach from=$obj->arr item=it} ... {/foreach} где $obj ассоциирована с $object. Собственно, проблема в том, чтобы ассоциировать $obj и $object внутри sometpl.tpl. Подскажите, плиз, как это сделать.
Я мог бы вынести класс в отдельный php-файл и подключить его в шаблоне через require_once... но с т.зр. рассматриваемой проблемы не вижу, что это меняет.
А как можно из {php}{/php} в sometpl.tpl сослаться на сам объект $smarty? Применение $this даёт ошибку почему-то...
Это, конечно, лично моё мнение и никого ни к чему не призываю. Но смарти - это бред. Чем пхп не шаблонизатор? С тем же успехом можно написать "include('мой шаблон.php');" и писать в этом шаблоне адекватный "<?php", а не пародию на пхп.
В реальной жизни проектам занимаются много людей, и шаблонизатор помогает верстальщикам интегрировать в проект, то что они наверстали. Еще к шаблонизаторам можно относится как классу с наборам готовых функций и упрощенным синтаксисом.
И чем вот это: {if $name eq 'Fred'} Welcome Sir. {else} Welcome, whatever you are. {/if} Лучше чем вот это: <?php if($name=='Fred') { ?> Welcome Sir. <?php } else { ?> Welcome, whatever you are. <?php } ?> Я не вижу чтобы смарти как-то упрощал синтаксис, особенно если учесть, что в доброй половине шаблонов, которые мне приходилось встречать, есть вставки "{php}...{/php}". Как их объяснить? Выходит верстальщик всё равно знает и пользуется основами пхп. Вон топикстартер даже описание класса в шаблон положил. И готовые инструменты - это, по большому счёту, псевдонимы для if, for, while и т.д.
Скажу за twig, на практике верстальщика легче научить синтаксису twig, чем php, так как всякие расширения используются и там уже есть готовые функции с более простым синтаксисом. Возможно мне везёт и попадаются только такие люди. Ещё блоки по умолчанию, иерархия блоков/шаблонов, фильтрация всех переменных и т.д.
Воу, полегче. Что там в пхп такого, что прям надо "учить"? Циклы? Например? Очень может быть, ибо мне в моей фирме попадались такие девочки, которым проще выучить десяток тегов HTML, чем освоить модные редакторы WYSIWYG с тысячей дурацких кнопок, которые родят убогий хтмл с пустыми абзацами и спанами, который ещё и чистить надо потом. И что-то я думаю, что если б надо было, то они бы форыч выучили бы за один раз.
Более правильно будет сказать, что верстальщики стали меньше ошибок совершать после перехода на синтаксис twig. Сами говорят, что легче воспринимать его, но это субъективно, мне что php что twig без разницы. Вот такой опыт. переменные по умолчанию очищаются от html наследование блоков и шаблонов. значения по умолчанию Я сам понимаю что этого мало, но это уже реализовано и людям нравится. Это хорошо, что люди хотят узнавать и учить что-то новое.