問題タブ [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.
symfony - Symfony と KNPmenu のパラメーターを持つネストされたメニュー
Symfony2 と Knpmenu を使用して、以下を処理するメニューを作成するのに苦労しています:
- パン粉
- 動的パラメータによるルーティング
- 異なる子で始まる個別のメニューのレンダリング
私のMenu/Builder.php
ファイルは次のようになります (navbar、pull-nav などの余分なビットは、ブートストラップ クラスを使用してレンダリングを処理する mopa_bootstrap 拡張機能の一部です):
アイデアは、最初の 2 つのレベルのみを印刷するメイン メニューと、表示されている特定の要素の編集/削除/任意のビュー間をユーザーが移動できるように別の場所にレンダリングされる別のメニューを用意することです。
私が達成しようとしているのは、親構造を処理するための単一の構造を持つことです。メニューでアクティブとして親に署名するだけでなく、作業中のブレッドクラム構造を処理できるようにすることです。
Resources/views/base.html.twig
私はこのようにメインメニューを呼び出しています:
理想的には、次のようなサブメニューです。
でも:
$options['id']
定義されていないため、メイン メニューのレンダリング時に knpmenu がエラーを返す- 私はまだセカンダリ メニューをレンダリングできません (したがって、パラメータ 'User' を渡すことによって) - ページはそのブロックで黒の出力を返すだけです
このアプローチは正しいですか?私は使用"knplabs/knp-menu": "2.0.*@dev"
しています"symfony/symfony": "2.5.*"
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 部分が失われ、機能する前に、なぜですか?
symfony - symfony-cmf でサブメニューをレンダリングする方法
私は必死に symfony-cmf でサブメニューをレンダリングしようとしています。
例
構造:
page1
現在のページが階層内のどこかにあるときはいつでも、メニューをレンダリングするために使用する必要があります。階層p1-subpage*
内にいるときは、メニューをレンダリングするために使用する必要があります。技術的には、現在のアイテムを第 1 レベルの親に設定し (まだ存在しない場合)、ノードの 1 つのレベルをレンダリングする必要があることを意味します (例: )。page2
p2-subpage*
knp_menu_render('main', { depth: 1 })
この問題は、次の 2 つの部分に分けることができます。
- 特定のノードから (サブ) メニューをレンダリングする
- 現在のノードの取得
思考と試練
- TWIG : KnpMenu 自体の機能としてサブメニューのレンダリングをサポートすることが提案されていますが、まだ実行されていません。小枝拡張機能を登録する回避策として、問題の誰かによって提供されています。ただし、この拡張機能は、KNP-Menu 2.0 で削除され
getCurrentItem
たメソッドに基づいています。cmfは現在 knp-menubundle の v1.1 を使用していますが、これはまもなく変更される予定です - TWIG : CnertaBreadcrumbBundleはこの機能を復活させますが、KNP-Menu 2.0 にも依存します。
- TWIG :ここで提案されているのと同様のハックを使用します。現在の URI をチェックし、スラッシュの数を数え、それに基づいて何を使用するかを決定します。これはおそらくうまくいくでしょう。ここでの問題:
cmfMainContent
変数が定義されておらず、同様のものを見つけることもできません{{ dump() }}
(メニューを含むものもありません)。 - RouteVoter : cmf 自体には MenuVoters 自体がいくつかあります。小枝でその機能にアクセスする方法はないと思いますし、メニュー構築を傍受する方法も知りません。
助けてくれてありがとう。
php - Symfony2 の MenuBuilder クラスから整形式のルートを生成する
コントローラーでこのルートを定義しました:
そして、KNPMenuBundle MenuBuilder クラスで正しいルートを設定する必要があります。私は次のようにやっています:
ルートは正しいページを表示し、正しいコードを実行するため、環境に対しては機能しdev
ますが、離れてdev
ライブに移動すると、この場合、何が間違っていますかprod
? クラス404 Not found
内でルートを生成する正しい方法は何ですか? MenuBuilder
これに関するアドバイスはありますか?
symfony - KnpMenuBundle の子オブジェクトは、他のものを最新のものにします
私は次の構造を持っています:
そしてまた
/list
詳細ページの1つが選択され、もちろん実際のリストが選択された場合、ナビゲーションをアクティブな要素にする必要があります。
私のナビゲーションは次のようになります。
他のいくつかの質問を読んでいましたが、正しい答えを見つけることができませんでした。私は説明するメニュー項目を持っていないのでList Detail
php - KnpMenu で RouteVoter を削除する
エクストラネットの各バンドルは、独立したアプリケーションです。私のメニューにはすべてのアプリがリストされており、実際のルートプレフィックスに応じて現在のアプリをマークするのが好きです.
最初に base.html.twig の twig コード:
ビルダー関数:
私の BundleVoter クラスは正しく動作し、現在のメニューが見つかった場合は true を返します。しかし、HTML では、現在の要素に「アクティブな」クラスが含まれることはありません。
KnpMenuBundle をもう少し読み、Knp\Menu\Matcher クラスにデバッグ コードを追加しました。
そして、この出力を得ました:
神秘的な RouteVoter はどこから来たのですか? 現在の要素の BundleVoter 選択を上書きしますか? どうすれば非アクティブ化/上書きできますか?
php - KnpMenu: MenuItem クラスに属性を追加
KnpMenuBundle を通じて Symfony2.3 で KnpMenu を使用しています。
MenuItem
最も簡単な方法で、属性を追加してクラスをカスタマイズしたいと思います。
目的は、アプリケーションのエンティティのいずれかにリンクしMenuItem
、後でそれを取得できるようにすることです。
たとえば、私はこれをしたい:
簡単だが醜い方法は、Knp\Menu\MenuItem.php
これを編集して追加することです:
それが適切な方法ではないことはわかっているので、上書きしようとしましKnp\Menu\MenuItem
たKnp\Menu\MenuFactory
が、十分ではありません...
もっと色々なものを上書きしないといけない気がするので、ここでアドバイスをお願いします。バンドルは非常に複雑で、この機能 (MenuItem にクラス属性を追加する) は既にバンドルによって管理されているように感じますが、その方法はわかりません。
何か案が?
symfony - Symfony2, Sonata : Sonata バンドルによって生成されたメニューからアクションを削除します
クライアントのニーズに合うように、管理者側をきれいにする必要があります。
Sonata の NewsBundle を使用していますが、実際にはコメントを使用する必要がないので、管理者側から削除したいと考えています。少なくともメニューから。設定で無効にする方法はありますか?これに関するドキュメントにはヒントがありません。
ここで、もう表示したくない特定の領域:
ところで、メニューは KnpMenu で生成されるかもしれません