0

イベント中にビューレンダラーに変数を割り当てようとしていますが、render event値を生成していません。

に添付したイベントがありrender eventますApplication Module。This is a Zend Framework 3 Application中に呼び出されるメソッドもありますがrender event operation 、フレームワークが非常に新しいため、より公開するために 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

これはうまくいきました。

        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 に答える
0

代わりに $GLOBALS グローバル変数を使用できます。私は同じ問題に直面しましたが、より良い解決策が見つかりませんでした。

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

JavaScriptで

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