Intereting Posts
Ошибка CakePHP: Таблица данных acos для модели Aco не найдена Подключение MySql с Android без использования PHP Время выполнения запроса в MySQL w / PHP Как изменить варианты выпадающего списка, основанные на другом выпадающем списке? Значения, полученные из базы данных добавить php-скрипт в cron для запланированной задачи из php? Какой хороший сценарий сокращения URL? Использование пространств имен с классами, созданными из переменной Книга или учебник о безопасном управлении пользователями и привилегиях Невозможно вставить данные в базу данных с помощью опции (textarea) Загруженное изображение не отображается после загрузки ajax в хром exec (): цитирование полной команды в Windows Запустить XDebug в Netbeans по внешнему запросу Обновите поле MySql (если поле не пустое, перейдите к следующему) PHP: потоковый удаленный pdf-клиент для браузера Xpath не ведет себя для разбора базового html

Smarty: можно ли вызвать функцию PHP (из класса контроллера) внутри шаблона?

Я создал функцию в классе контроллера, которая должна использоваться внутри шаблона (потому что шаблон, который он отображал много раз (каждый шаблон – это сообщение на веб-сайте, и все они будут отображаться с различными значениями в новостной ленте). способ называть его переменной smarty? Скажем, вы создали функцию в контроллере:

public function foo($bar){ $bar++; return $bar; } 

А затем в шаблоне:

{$smarbar|foo} или что-то похожее

Вы можете зарегистрировать модификатор, который будет вызывать данный метод класса:

 class SomeClass { public function someMethod($value) { // return modified value } } $smarty = new Smarty(); $smarty->registerPlugin('modifier', 'myModifier', array('SomeClass', 'someMethod')); // or $instance = new SomeClass(); $smarty->registerPlugin('modifier', 'myModifier', array($instance, 'someMethod')); 

и теперь вы можете использовать его внутри своего шаблона:

 {$someVar|myModifier} 

Вот документация registerPlugin .

Все зависит от ваших потребностей, но если вы просто хотите использовать такой код, вы можете назначить объект Smarty и использовать его методы.

Например, в PHP вы можете:

 class Controller { public function foo($bar) { $bar++; return $bar; } } $smarty->assign('a', new Controller); 

В Smarty вы можете делать:

 {$a->foo(5)} {$a->foo(15)} 

И вы получите:

6 16

как выход.

Да, просто подключите функцию к шаблону

{$ MyVar | my_function)