Я хочу написать код для запуска перед каждым действием в моем модуле. Я пытался подключиться к onBootstrap()
, но код работает и в других модулях.
Любые предложения для меня?
Я хочу написать код для запуска перед каждым действием в моем модуле. Я пытался подключиться к onBootstrap()
, но код работает и в других модулях.
Любые предложения для меня?
Есть два способа сделать это.
Один из способов - создать службу и вызвать ее в каждом методе отправки контроллеров.
Use onDispatch method in controller.
class IndexController extends AbstractActionController {
/**
*
* @param \Zend\Mvc\MvcEvent $e
* @return type
*/
public function onDispatch(MvcEvent $e) {
//Call your service here
return parent::onDispatch($e);
}
public function indexAction() {
return new ViewModel();
}
}
не забудьте включить следующую библиотеку поверх вашего кода
use Zend\Mvc\MvcEvent;
Второй способ - сделать это через Module.php, используя событие при отправке.
namespace Application;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
class Module {
public function onBootstrap(MvcEvent $e) {
$sharedEvents = $e->getApplication()->getEventManager()->getSharedManager();
$sharedEvents->attach(__NAMESPACE__, 'dispatch', array($this, 'addViewVariables'), 201);
}
public function addViewVariables(Event $e) {
//your code goes here
}
// rest of the Module methods goes here...
//...
//...
}
Как создать простой сервис с помощью ZF2