Я попытался получить имя контроллера и имя действия в файле макета. Но не мог. В ZF1 мы использовали экземпляр Front Controller для получения имени контроллера и действия. Я много занимался веб-сайтами. Но решения нет. Как я могу попасть в ZF2?Zend Framework 2 - Получить контроллер и имя действия в макете
0
A
ответ
5
Контроллеры и их сценарии просмотра разделены. Фактически, в одном запросе может быть несколько контроллеров.
Если вы хотите, чтобы контроллер и действие отправили запрос, вы можете вставлять их, подключаясь к событию отправки и вставляя контроллер и имя действия в прилагаемую ViewModel.
Один из способов сделать это внутри события Bootstrap, которое должно быть в классе модуля.
public function onBootstrap(\Zend\EventManager\EventInterface $e)
{
$app = $e->getApplication();
$app->getEventManager()->attach(
'dispatch',
function($e) {
$routeMatch = $e->getRouteMatch();
$viewModel = $e->getViewModel();
$viewModel->setVariable('controller', $routeMatch->getParam('controller'));
$viewModel->setVariable('action', $routeMatch->getParam('action'));
},
-100
);
0
я получил ответ выше, чтобы работать, но я должен был использовать sharedManager передать представления в контроллер
$app = $e->getApplication();
$app->getEventManager()->getSharedManager()->attach(
__NAMESPACE__,
'dispatch',
function($e) {
$routeMatch = $e->getRouteMatch();
$viewModel = $e->getViewModel();
$viewModel->setVariable('controller', $routeMatch->getParam('controller'));
$viewModel->setVariable('action', $routeMatch->getParam('action'));
$controller = $e->getTarget();
$controller->view = $viewModel;
},
100
);
Если бы я хотел использовать ответ выше как я должен был сделать
$this->getEvent('dispatch')->getViewModel()
в контроллере
Смежные вопросы
- 1. zend framework 2 список модулей в макете
- 2. Zend framework 2 помощник действия?
- 3. изображения в макете Zend Framework
- 4. Как получить имя участника-референта в Zend Framework 2
- 5. Включить класс в контроллер Zend Framework 2
- 6. Zend Framework 2 - Добавить стиль в контроллер
- 7. Истечение срока действия в zend framework 2
- 8. Zend Framework: Zend_Form в макете
- 9. Zend Framework 2 Действия контроллера RESTful
- 10. Получить контроллер и имя действия из контроллера?
- 11. Zend Framework 2 - Возврат действия контроллера json
- 12. Zend Framework 2 - помощник действия Redirector
- 13. Zend Framework 2 Текущее имя ресурса
- 14. Zend Framework 2 layout.phtml
- 15. Как получить имя контроллера и имя действия в представлении в Zend Framework?
- 16. Задайте имя модуля, имя контроллера и имя действия в Zend framework?
- 17. Zend Framework 2 два шаблона в одном макете?
- 18. Как проверить действия контроллера путем перенаправления в Zend Framework 2?
- 19. Zend Framework 2 и ExtJS
- 20. Zend Framework 2 Custom ViewHelper для конкретного действия в контроллере
- 21. Как получить текущий модуль/контроллер/действие из сценария вида в Zend Framework 2?
- 22. Получить все модули, контроллеры и действия из приложения Zend Framework
- 23. Zend Framework - получить фронт-контроллер от бутстрапа?
- 24. Zend Framework 2 Маршрутизация
- 25. Zend Framework контроллер перестал работать
- 26. Zend Framework 2 для Zend Framework Newbie
- 27. Ошибка CSS в макете - Zend Framework
- 28. Zend Framework 2 TableGateway
- 29. Маршруты в zend framework 2
- 30. ZfcUser и Zend Framework 2
Прежде всего, thasnk. я проверил. Но я получаю следующую ошибку. Неустранимая ошибка: исключение «Zend \ ServiceManager \ Exception \ ServiceNotFoundException» с сообщением «Zend \ ServiceManager \ ServiceManager :: get не удалось получить или создать экземпляр для modulename» в/var/www/app/vendor/zendframework/zendframework/библиотека/Zend/ServiceManager/ServiceManager.php: 452 Трассировка стека: # 0 /var/www/app/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(110): Zend \ ServiceManager \ ServiceManager-> get ('modulename', true) – 2plus
Вы спрашиваете у serviceManager, чтобы получить «modulename» службы? Похоже, что это не связано с тем, что вы просили здесь. – netiul
Спасибо за ваш ответ. 'modulename' - мой модуль. Я использовал приведенный выше код в этом модуле. После этого я получаю вышеуказанную ошибку. – 2plus