私はsymfonyアプリケーションのパンくずリストメニューを作成しています:{Action}を実行するにはリンクのリストを作成し、次にlayout.phpのコンポーネントを使用して表示しますので、アクションのデータをこれに渡す方法を探しています成分。私はsfContextをレジストリとして使うことができますが、もっと良い方法がありますか?PHP Symfony 1.4 - アクションからコンポーネントにデータを渡す最善の方法は?
答えて
通常はそんなにアクションのビューでスロットを使用します。あなたのlayout.phpで
slot('breadcrumb', $links);
そして:基本的に
<?php if(has_slot('breadcrumb')): ?>
<?php include_component('modulename', 'breadcrumb', get_slot('breadcrumb')); ?>
<?php endif; ?>
slot
は(コンテキストで特別な名前空間を使用していますまたは多分その応答...どこかのsfParameterHolderのいくつかのインスタンス、hehe)をスロット名/値のレジストリとして - あなたが考えていた解決策は既に実装されています:-)
答えをありがとう、しかし私の問題はリンクが実際に定義されていなくても、パンくずリストのコンポーネントはとにかく含まれなければならないということです。また、私はレジストリを使用するよりもあまりエレガントではないと思うので、アクションのテンプレートにブレッドクラムのリンクを渡したくないです。 –
もう1つの解決策は、ブレッドクラムの生成(リンクの決定およびリンク)をコンポーネントから別のクラスに移動することです。次に、このクラスを 'context.load_factories'のコンテキストに注入して、現在の' sfWebRequest'で初期化して、あなたのパン粉を整えるのに十分だと思います。そうでない場合は、この同じクラスを 'controller.change_action'イベントにフックして解決されたアクションをそのイベントにプッシュすることもできます。あなたのブレッドクラムがどのようにコンパイルされているかを知らずに言うのは難しいです。次に、このブレッドクラム・クラスをコンポーネントから取り出すだけです。 – prodigitalson
ありがとう、たくさん! –
:
$this->links = array('link1', 'link2', 'linkn');
テンプレートで:
<?php include_component('modulename', 'breadcrumb', array('links' => $links); ?>
- 1. symfony 1.4のすべてのアクションにアクションとパスを渡す
- 2. symfony 1.4のアクションをコピー
- 3. symfony 1.4でフロントエンド/ libのクラスに変数を渡す方法
- 4. symfony 1.4アプリケーションにsymfony2コンポーネントを含める方法
- 5. symfony 1.4でセッション依存データをキャッシュする方法は?
- 6. フォームから値を取得する方法(symfony 1.4)
- 7. Symfony 1.4:Fixtureファイルから.SQLを生成する方法
- 8. symfony 1.4のcompenentsをsymfony 1.4で使用
- 9. CakePHPコンポーネントからヘルパーにデータを渡す
- 10. Symfony 1.4のすべてのアクションの後にコードを実行
- 11. アクション "default/show"は存在しませんSymfony 1.4 Jobeet Day 7
- 12. 最後のエラーをカスタムエラーリダイレクトに渡す最善の方法はありますか?
- 13. symfony 1.4:error.html.phpに例外メッセージを渡すには?
- 14. Symfony 1.4 Doctrineはテスト前にデータをリセットします
- 15. アクセス方法Angular2の親コンポーネントから渡された入力データ
- 16. Symfony 2のサブネームペースコントローラからアクションを埋め込む方法は?
- 17. 隣接するコンポーネント/フィールドにアクセスする最善の方法
- 18. symfonyの1.4フォームクリエーター
- 19. symfonyの1.4クロスアプリケーションリンクは
- 20. Symfony 1.4カスタムフォーム
- 21. コピーオブジェクト - symfonyの1.4
- 22. AngularJS 1.5の内部コンポーネント間で関数を渡す最善の方法は何ですか?
- 23. PHPからASP.netへの最善の方法?
- 24. PHPのリダイレクト/リロードの最善の方法
- 25. Seguesを使用してViewController間でデータを渡す最善の方法
- 26. Symfony 1.4のニュースレターモジュール
- 27. 最善の方法は、モバイルデバイス
- 28. symfony 1.4 embedRelation unsetフィールド
- 29. スレッドランナーメソッドにkwargsを渡す最善の方法
- 30. symfony 1.4でフォームのpostValidatorを無効にする方法
はこれを行うには、一般的に、ドキュメントに見られるフラッシュ変数を使用してのように思えます。私はこれがハッカーであることに同意します。これは、1.4の最大の黒い目の1つです。これは、ある行動から別の行動へのフォワーディングの形でよく実行されます。 – yitznewton