問題タブ [knpmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3155 参照

symfony - Symfony と KNPmenu のパラメーターを持つネストされたメニュー

Symfony2 と Knpmenu を使用して、以下を処理するメニューを作成するのに苦労しています:

  • パン粉
  • 動的パラメータによるルーティング
  • 異なる子で始まる個別のメニューのレンダリング

私のMenu/Builder.phpファイルは次のようになります (navbar、pull-nav などの余分なビットは、ブートストラップ クラスを使用してレンダリングを処理する mopa_bootstrap 拡張機能の一部です):

アイデアは、最初の 2 つのレベルのみを印刷するメイン メニューと、表示されている特定の要素の編集/削除/任意のビュー間をユーザーが移動できるように別の場所にレンダリングされる別のメニューを用意することです。

私が達成しようとしているのは、親構造を処理するための単一の構造を持つことです。メニューでアクティブとして親に署名するだけでなく、作業中のブレッドクラム構造を処理できるようにすることです。

Resources/views/base.html.twig私はこのようにメインメニューを呼び出しています:

理想的には、次のようなサブメニューです。

でも:

  1. $options['id']定義されていないため、メイン メニューのレンダリング時に knpmenu がエラーを返す
  2. 私はまだセカンダリ メニューをレンダリングできません (したがって、パラメータ 'User' を渡すことによって) - ページはそのブロックで黒の出力を返すだけです

このアプローチは正しいですか?私は使用"knplabs/knp-menu": "2.0.*@dev"しています"symfony/symfony": "2.5.*"

0 投票する
2 に答える
1860 参照

php - RequestVoter を介して MenuBuilder から Container または securityContext または EntityManager にアクセスする

Gist で共有されているこのコードを見つけました (どこかでリンクを失った)。そのようなものが必要だったので、アプリケーションで使用し始めましたが、まだ完全には理解していないため、いくつかの問題が発生しています。

KnpMenuBundle と動的手段を使用して動的メニューを作成しようとしています。ある時点で、データベースを介してアクセス許可を確認する必要があり、コントローラーからルートを読み取ることができれば理想的ですが、これは別のタスクであり、おそらく注釈を作成することができますその時が来たら、別のトピックを開きます。

現在、SecurityContext にアクセスして、ユーザーがログに記録されているかどうかを確認する必要がありますが、その方法はわかりません。

私はメニューをレンダリングしていますがRequestVoter(私は思う)、これがコードです:

に関連するすべてのコードsecurityContextは、menuBuilder. これは、メニューを作成しているコードです。

しかし、メソッドに渡していないため、これは完全に間違っていsecurityContextます。方法がわからず、このエラーが発生しています。

テンプレートのレンダリング中に例外がスローされました (「通知: 未定義のプロパティ: PlantillaBundle\Menu\MenuBuilder::$securityContext in /var/www/html/src/PlantillaBundle/Menu/MenuBuilder.php 12 行目」) / var/www/html/src/PlantillaBundle/Resources/views/menu.html.twig の 2 行目。

投票者は次のように定義さservices.ymlれます。

では、どのように注入securityContextし (同じ手順になると思われるので、EntityManager は要求しません)、menuBuilder からアクセスしますか?

更新: コードのリファクタリング

したがって、@Cerad の提案に従って、この変更を行いました。

services.yml

MenuBuilder.php

Abd ib 私のテンプレートはメニューをレンダリングするだけです{{ knp_menu_render('frontend_menu') }}が、FontAwesome 部分が失われ、機能する前に、なぜですか?

0 投票する
3 に答える
968 参照

symfony - symfony-cmf でサブメニューをレンダリングする方法

私は必死に symfony-cmf でサブメニューをレンダリングしようとしています。

構造:

page1現在のページが階層内のどこかにあるときはいつでも、メニューをレンダリングするために使用する必要があります。階層p1-subpage*内にいるときは、メニューをレンダリングするために使用する必要があります。技術的には、現在のアイテムを第 1 レベルの親に設定し (まだ存在しない場合)、ノードの 1 つのレベルをレンダリングする必要があることを意味します (例: )。page2p2-subpage*knp_menu_render('main', { depth: 1 })

この問題は、次の 2 つの部分に分けることができます。

  1. 特定のノードから (サブ) メニューをレンダリングする
  2. 現在のノードの取得

思考と試練

助けてくれてありがとう。

0 投票する
0 に答える
131 参照

php - Symfony2 の MenuBuilder クラスから整形式のルートを生成する

コントローラーでこのルートを定義しました:

そして、KNPMenuBundle MenuBuilder クラスで正しいルートを設定する必要があります。私は次のようにやっています:

ルートは正しいページを表示し、正しいコードを実行するため、環境に対しては機能しdevますが、離れてdevライブに移動すると、この場合、何が間違っていますかprod? クラス404 Not found内でルートを生成する正しい方法は何ですか? MenuBuilderこれに関するアドバイスはありますか?

0 投票する
0 に答える
34 参照

symfony - KnpMenuBundle の子オブジェクトは、他のものを最新のものにします

私は次の構造を持っています:

そしてまた

/list詳細ページの1つが選択され、もちろん実際のリストが選択された場合、ナビゲーションをアクティブな要素にする必要があります。

私のナビゲーションは次のようになります。

他のいくつかの質問を読んでいましたが、正しい答えを見つけることができませんでした。私は説明するメニュー項目を持っていないのでList Detail

0 投票する
1 に答える
755 参照

php - KnpMenu で RouteVoter を削除する

エクストラネットの各バンドルは、独立したアプリケーションです。私のメニューにはすべてのアプリがリストされており、実際のルートプレフィックスに応じて現在のアプリをマークするのが好きです.

最初に base.html.twig の twig コード:

ビルダー関数:

私の BundleVoter クラスは正しく動作し、現在のメニューが見つかった場合は true を返します。しかし、HTML では、現在の要素に「アクティブな」クラスが含まれることはありません。

KnpMenuBundle をもう少し読み、Knp\Menu\Matcher クラスにデバッグ コードを追加しました。

そして、この出力を得ました:

神秘的な RouteVoter はどこから来たのですか? 現在の要素の BundleVoter 選択を上書きしますか? どうすれば非アクティブ化/上書きできますか?

0 投票する
0 に答える
802 参照

php - KnpMenu: MenuItem クラスに属性を追加

KnpMenuBundle を通じて Symfony2.3 で KnpMenu を使用しています。

MenuItem最も簡単な方法で、属性を追加してクラスをカスタマイズしたいと思います。

目的は、アプリケーションのエンティティのいずれかにリンクしMenuItem、後でそれを取得できるようにすることです。

たとえば、私はこれをしたい:

簡単だが醜い方法は、Knp\Menu\MenuItem.phpこれを編集して追加することです:

それが適切な方法ではないことはわかっているので、上書きしようとしましKnp\Menu\MenuItemKnp\Menu\MenuFactoryが、十分ではありません...

もっと色々なものを上書きしないといけない気がするので、ここでアドバイスをお願いします。バンドルは非常に複雑で、この機能 (MenuItem にクラス属性を追加する) は既にバンドルによって管理されているように感じますが、その方法はわかりません。

何か案が?

0 投票する
1 に答える
1063 参照

symfony - Symfony2, Sonata : Sonata バンドルによって生成されたメニューからアクションを削除します

クライアントのニーズに合うように、管理者側をきれいにする必要があります。

Sonata の NewsBundle を使用していますが、実際にはコメントを使用する必要がないので、管理者側から削除したいと考えています。少なくともメニューから。設定で無効にする方法はありますか?これに関するドキュメントにはヒントがありません。

ここで、もう表示したくない特定の領域:

ソナタメニュー

ソナタメニュー

ところで、メニューは KnpMenu で生成されるかもしれません