良い一日、
ZF2 スケルトン (zfctwig バージョン) のコンテンツを含む twig レイアウト テンプレートがあり、module.config.php で設定する変数を使用して動的なメイン ナビゲーションが必要です。
レイアウト.小枝:
<div class="nav-collapse collapse">
<ul class="nav">
{% for item in navigation %}
<li {% if item.active %} class="active" {% endif %}>
<a href="{{ url(item.route) }}">
{{ translate(item.name) }}
</a>
</li>
{% endfor %}
</ul>
</div><!--/.nav-collapse -->
Module.php で onBootstrap() メソッドを使用して渡します。
Module.php:
$navigation = array(
'home' => array(
'name' => 'Home',
'route' => 'home',
),
'profile' => array(
'name' => 'Profile',
'route' => 'myroute',
'active' => true
),
);
$view = $e->getApplication('application')->getMvcEvent()->getViewModel();
$view->navigation = $navigation;
$navigation 変数は、これを機能させた後、私の module.config.php に配置されます。
このコードは、テンプレートで twig を使用していない場合 (例: twig コードのない layout.phtml) に機能しますが、上記の layout.twig を使用している場合、{{navigation}} は空です。
使わなくていいと思う
$view = $e->getApplication('application')->getMvcEvent()->getViewModel();
小枝のバージョンではなく、デフォルトのzf2 ViewModelを返すと思うので、取得方法がわかりません。
これが問題ではない場合、何が間違っていますか? それが機能した場合、コントローラの 1 つで $navigation['profile'] のアクティブ インデックスを false に変更するにはどうすればよいですか?
どうもありがとうございました!
アップデート:
誰も同じ問題を経験していないようです。私はこれを間違った方法でやっていますか?これを行うより良い方法はありますか?目標は、常にビュー ファイルを更新するのではなく、module.config.php 内の設定を使用して変更できる動的なメイン メニューとナビゲーションを作成することです。メインメニューはすべてのページで同じになるため、グローバルにしたいので、特定のコントローラーで変更するのも良くありません。ウェブを検索しましたが、小枝を使用してそれを行う方法が見つかりません。