【问题标题】:How to get the current view being rendered inside ZF2如何在 ZF2 中获取当前视图
【发布时间】:2012-12-03 13:06:26
【问题描述】:

有没有办法让当前视图在 zend 框架 2 中呈现?

我相信事件系统应该可以做到这一点,但我似乎无法让它发挥作用。

我想要获取此信息的原因是我可以自动包含一个同名的 .js 文件,这样可以节省我每次在操作中指定此规则的时间。

非常感谢, 汤姆

【问题讨论】:

  • 您是指视图还是布局?您在什么阶段需要数据?

标签: zend-framework2 viewrendering


【解决方案1】:

我不太清楚你在 ZF2 中渲染当前视图是什么意思,但这里是如何自动添加一个以操作命名的 js 文件。只需将其放入您的控制器中即可:

public function onDispatch(MvcEvent $mvcEvent)
{
    $renderer = $this->serviceLocator->get('Zend\View\Renderer\PhpRenderer');
    $actionName = $mvcEvent->getRouteMatch()->getParam('action');
    $jsFile = $actionName . '.js';
    $baseUrl = $mvcEvent->getRouter()->getBaseUrl();
    $renderer->headScript()->appendFile($baseUrl . '/js/' . $jsFile);

    return parent::onDispatch($mvcEvent);
}

当然,您可能需要为您的 js 文件位置和名称调整代码。 onDispatch 方法在动作之前被自动调用。

【讨论】:

    【解决方案2】:

    谢谢你,Wunibald,

    您的示例运行良好,我在下面对其进行了修改以附加到一个事件,以便它适用于每个控制器/模块。为此,我已将其包含在我的应用程序模块的 onBootstrap 函数中。

    $events = StaticEventManager::getInstance();
    
        $events->attach('Zend\\Mvc\\Application', 'dispatch', function(\Zend\EventManager\Event $event)
        {
            $baseUrl = $event->getRouter()->getBaseUrl();
            $renderer = $event->getApplication()->getServiceManager()->get('Zend\View\Renderer\PhpRenderer');
    
            $action = $event->getRouteMatch()->getParam('action');
            $controller = $event->getRouteMatch()->getParam('controller');
    
            if (strlen($controller) > 0)
            {
                list($module, $_null, $controller) = explode('\\', $controller);
    
                $renderer->headScript()->appendFile($baseUrl . '/module/' . $module . '/view/' . strtolower($module) . '/' . strtolower($controller) . '/' . strtolower($action) . '.js');
                $renderer->headScript()->appendFile($baseUrl . '/module/' . $module . '/view/' . strtolower($module) . '/' . strtolower($module) . '.js');
            }
        });
    

    再次感谢您为我指明了正确的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多