我想将通用变量分配给控制器操作之外的view renderer
。
我更愿意在module class bootstrap
中处理此问题。
我的问题是,如何在view model
中创建可与控制器共享的module class bootstrap
。
我的最终结果是能够在我们在控制器操作中创建一个新实例之前向视图模型添加变量。
这是我开始的事情,但i cannot add variables to the declared viewmodel and have it persist to the controller's new instance of a view model
。
有没有办法创建视图模型并在发送之前将其设置为渲染器。
这是我开始的事情,但是如果我能在模块类引导程序中获取它而不是id更喜欢。
我认为这不起作用。
class BaseController extends AbstractActionController
{
protected $viewModel;
public function onDispatch(MvcEvent $e)
{
$this->viewModel = new ViewModel([
'module' => 'modulename',
'controller' => 'controllername',
'action' => 'actionname'
]);
parent::onDispatch($e);
}
}
答案 0 :(得分:0)
在Module.php
中,您可以访问event
对象。
在这种情况下,你可以设置一些这样的变量:
$event->getViewModel()->setVariable('isAdmin', $isAdmin);
$event->getViewModel()->setVariable('var', $var);
$event->getViewModel()->setVariable('form', $form);
$event->getViewModel()->setVariable('uri', $uri[0]);
如果你想测试更多,你也可以这样做:
$widgetTemplate = new ViewModel();
$widgetTemplate = $widgetTemplate->setTemplate('widget/container');
$event->getViewModel()->addChild($widgetTemplate, 'widget');
layout.phtml
中提供了这些变量。我没有测试控制器中是否有viewModel
,如果您测试此解决方案,请给我反馈。
对于module.php
中定义的变量,您还可以使用Zend\Container\Session
组件在控制器中修改它