我试图在布局文件中获取控制器名称和动作名称。但不能。在 ZF1 中,我们使用 Front Controller 实例来获取控制器和动作名称。我浏览了很多网站。但是没有解决办法。怎么进ZF2?
问问题
6149 次
2 回答
5
控制器和它们的视图脚本是解耦的。事实上,一个请求可能涉及多个控制器。
如果您想要将请求分派到的控制器和操作,您可以通过挂钩到分派事件来注入它们,并在附加的 ViewModel 中注入控制器和操作名称。
一种方法是在 Bootstrap 事件中,它应该在 Module 类中。
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
);
于 2013-01-10T11:05:44.943 回答
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()
在控制器中
于 2013-01-11T17:15:36.127 回答