Я хочу сделать некоторые действия (php-скрипт) перед всеми действиями в моем приложении frontend, а затем передать результат от этого сценария к действиям в переменной – поэтому я могу получить значение переменной из всех действий. Где я должен объявить это так?
Если решение фильтра не соответствует вашим потребностям, вы также можете создать базовый класс действий с функцией preExecute:
// app/frontend/lib/baseActions.class.php class baseActions extends sfActions { public function preExecute() { $this->myVar = .... // define your vars... } }
Затем класс действий вашего модуля расширяет класс baseActions:
// app/frontend/modules/myModule/actions/actions.class.php class myModuleActions extends baseActions { public function executeIndex(sfWebRequest $request) { // var $this->myVar is available in any action and in your template ... } }
если вам нужно использовать функцию preExecute в вашем действии класса модуля, не забудьте вызвать в нем parent::preExecute()
.
Какая информация?
Я бы рекомендовал вам использовать фильтры .
В ваших apps/frontend/config/filters.yml
:
rendering: ~ myfilter: class: myCustomFilter
Создайте файл lib/filter/myCustomFilter.php
:
<?php class myCustomFilter extends sfFilter { public function execute ($filterChain) { if ($this->isFirstCall()) { // do what ever you want here. $config = Doctrine_Core::getTable('Config')->findAll(); sfConfig::set('my_config', $config); } $filterChain->execute(); } }
И затем, где угодно, вы можете получить свои данные:
sfConfig::get('my_config');