0

我试图在我附加到的事件期间将变量分配给我的视图渲染器render event并且它不产生值。

我有一个事件,我附加到render event我的Application Module. 我也有在render event operation This is a Zend Framework 3 Application 期间调用的方法,但是我标记了 Zend Framework 2 以获得更多曝光,因为该框架非常新。这里是

namespace Application;

class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        $app = $e->getParam('application');
        $app->getEventManager()->attach('render', array($this, 'setAssignRouteVariables'));
    }

    public function setAssignRouteVariables(MvcEvent $e)
    {
        $matches    = $e->getRouteMatch();
        $action     = $matches->getParam('action');
        $controller = $matches->getParam('controller');
        $designHandler = $e->getApplication()->getServiceManager()->get('DesignHandler');   
        $designHandler->getPhprenderer()->controllerName='testcontroller';
        $designHandler->getPhprenderer()->actionName='testaction';
    }
}

如果您看,我正在getPhprenderer()使用DesignHandler该类调用该方法。此方法返回一个\Zend\View\Renderer\PhpRenderer. 无论如何,在此之后我将变量分配给渲染器对象。

在此之后,in my layout - application/view/layout/layout.phtml我这样做:

<script type="text/javascript">
   var currentController = '<?php echo $this->controllerName;?>';
   var currentAction = '<?php echo $this->actionName;?>';
</script>

我进入blank values这个。

我在这里做错了什么?

这是当前的结果

    <script type="text/javascript">
       var currentController = '';
       var currentAction = '';
    </script>
4

2 回答 2

0

您可以改用 $GLOBALS 全局变量。我遇到了同样的问题,但没有找到更好的解决方案。

$GLOBALS["my_index"] = "My value";

在 JavaScript 中

var myval = '<?=$GLOBALS["my_index"]?>';
于 2016-08-30T08:49:52.607 回答
0

这行得通。

        public function setAssignRouteVariables(MvcEvent $e)
        {
            $matches    = $e->getRouteMatch();
            $action     = $matches->getParam('action');
            $controller = $matches->getParam('controller');     
            $e->getViewModel()->controllerName=$controller;
            $e->getViewModel()->actionName=$action;
        }
于 2016-08-28T02:57:28.050 回答