Мне уже удалось подписаться на метод onDispatch()
в моем Application\Module.php
, где должно быть доступно больше информации о маршрутизации, чем onBootstrap()
.Получить имя контроллера от модуля.php
public function onBootstrap(MvcEvent $e) {
$em = $e->getApplication()->getEventManager();
$em->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch'));
}
public function onDispatch(\Zend\Mvc\MvcEvent $e) {
//$controllerName = /* ... ? */;
$e->getViewModel()->setVariables(
array('controllerName'=> $controllerName,
'actionName' => $actionName)
);
return parent::onDispatch($e);
Что мне нужно, чтобы вызвать имя контроллера? И я имею в виду не класс, но скажу, если мой класс контроллера, если Application\Controller\MyController
, я хотел бы получить my-controller
как то, что можно найти в URL-адресе. Я также не хотел бы выполнять сопоставление строк по самому URL-адресу, поскольку я не хочу полагаться на него из-за возможной более сложной маршрутизации.
Кроме того, если вы знаете, скажите, пожалуйста, как я могу получить название действия.
Спасибо, но это не что я ищу. Я ищу получение имени контроллера в форме, которая будет взята из URL-адреса с помощью маршрута приложения по умолчанию, который поставляется с приложением Zend Skeleton. Таким образом, ваш бит кода даст мне контроллер по умолчанию как «Application \ Controller \ Index». Я хотел бы получить его как 'index'. Точно так же он будет извлечен для URL-адреса, и то же самое я могу передать его любому помощнику сборки url в качестве параметра контроллера. –