1

良い一日、

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 内の設定を使用して変更できる動的なメイン メニューとナビゲーションを作成することです。メインメニューはすべてのページで同じになるため、グローバルにしたいので、特定のコントローラーで変更するのも良くありません。ウェブを検索しましたが、小枝を使用してそれを行う方法が見つかりません。

4

1 に答える 1

1
$sm->get('ZfcTwigRenderer');

このコードを使用して twig レンダラーにアクセスします

例 :

public function onBootstrap(MvcEvent $e)
    {

        $ZfcTwigRenderer = $e->getApplication()->getServiceManager()->get('ZfcTwigRenderer');


    }
于 2013-03-27T06:15:27.227 に答える