私は、このナビゲーションビュースクリプトがあります:getServiceLocator()
が廃止されているのでZF2からZF3への移行:ナビゲーションビューの調整方法私ZF2アプリケーションで
$routeMatch = $this->getHelperPluginManager()
->getServiceLocator()
->get('Application')
->getMvcEvent()
->getRouteMatch();
$currentRoute = $routeMatch instanceof \Zend\Mvc\Router\RouteMatch ? $routeMatch->getMatchedRouteName() : null;
?>
<?php foreach ($this->container as $page) : ?>
<li <?php echo $currentRoute == $page->getRoute() ? ' class="active"' : null;?>>
<?php echo $this->navigation()->menu()->htmlify($page, true, false) . PHP_EOL; ?>
</li>
<?php endforeach; ?>
を、私は、ナビゲーションビュースクリプトに現在のルートについての情報を取得するための別の方法が必要です。
このビュースクリプトは、部分設定とlayout.phtml
に呼び出されます:
echo $this->navigation('navigation')->menu()->setPartial('navigation/default');
だから私はテンプレート変数を経由して必要情報を渡すためにアイデアを得ました。私はModule#onDispatch(...)
で1を作成しました:
public function onDispatch(MvcEvent $mvcEvent)
{
$viewModel = $mvcEvent->getApplication()->getMvcEvent()->getViewModel();
$routeMatch = $mvcEvent->getRouteMatch();
$viewModel->currentRoute = $routeMatch instanceof RouteMatch
? $routeMatch->getMatchedRouteName() : null
;
}
今、私はlayout.phtml
でそれにアクセスすることができます。しかし、Zend\View\Helper\Navigation\Menu#setPartial(...)
が変数の引数を受け付けないので、ナビゲーションビューのスクリプトに渡す方法はありません。
Zend Framework 3のナビゲーションビューに変数(特に現在のルートに関する情報)を渡すにはどうすればよいですか?
答えていただきありがとうございますが、既に動作しています。問題は、 'アクティブな' 'プロパティー 'の設定と、一般的にナビゲーションビュースクリプトに変数を渡すことです。 – automatix
いつでも歓迎です!それをしてうれしい! – unclexo
もう一度お返事ありがとうございます!それは問題を解決しました。 – automatix