Я хотел бы использовать Smarty в сочетании с Zend Framework, особенно некоторые из них - Help Helers. Теперь я понял, где я реализовал Zend_View, который использует Smarty для отображения шаблонов. Я могу назначать значения как обычно. Все идет нормально.Есть ли способ сказать Smarty не печатать выражение?
Теперь я бы очень хотел использовать помощников Zend View в Smarty. Я asssigned объект Zend_View, как «это» и попытался это в шаблоне:
{$this->layout()->setLayout('default')}
Как это будет печатать возвращаемое значение метода setLayout() (который является Zend_Layout), возникает ошибка:
Catchable фатальная ошибка: Объект класса Zend_Layout не может быть преобразован в строку в /path/to/templates_c/089c3d67082722c7cabc028fa92a077f8d8b4af5.file.default.tpl.cache.php на линии 27
Это для меня ясно, поэтому я пошел в ядро Smarty, чтобы исправить это:
сгенерированный код сделал выглядеть следующим образом:
<?php
echo $_smarty_tpl->tpl_vars['this']
->value->layout()
->setLayout('default');
?>
И теперь он читает:
<?php
$hack = $_smarty_tpl->tpl_vars['this']
->value
->layout()
->setLayout('default');
if(is_string($hack) ||
(is_object($hack) && method_exists($hack, '__toString')))
echo $hack;
?>
Теперь это, вероятно, самое худшее исправить я могу думать, по нескольким причинам (потеря совместимости Smarty, представление). К сожалению, это единственный. Есть ли способ остановить Smarty от попытки распечатать вывод выражения? Кроме того, я хочу, чтобы синтаксис оставался максимально интуитивным, и я не хочу писать функции Smarty для всех помощников, потому что я хочу использовать этот код с сторонним приложением (Pimcore), которое может добавить новые помощники.
Заранее благодарим за любые предложения!
Вы не думаете, что вы делаете вещи излишне сложные для себя? Что не так с использованием php для шаблонов? – vascowhite
Вы видели [это] (http://devzone.zend.com/406/integrating-smarty-with-the-zend-framework/)? – vascowhite
Или [это] (http://gediminasm.org/article/smarty-3-extension-for-zend-framework)? – vascowhite