私は、独自のリポジトリ、マネージャ、プロバイダなどを使って複数のユーザタイプを定義できるようにカスタムのユーザバンドルを作成しています。そのため、限られたコントローラセットを作成する代わりに、定義されたユーザタイプと設定に基づいてコントローラを生成するコントローラファクトリ。しかし、これは重要な疑問を提起します - その工場はどこでどのように動作するべきですか?symfony:コントローラの工場
ここでは、工場でコントローラを作成するだけでは十分ではないことにご注意ください。また、すべてのルートをどこかに設定する必要があります。
質問は - これにはどのようなアーキテクチャが最適でしょうか?拡張のload
方法で
ロード工場の定義を、そしてそこにすべてのコントローラを作成:
それは私が私のコードを配置しますレイヤーを選択することになると、私は他の人の間で、検討していました。問題:コンテナビルド前にルータが使用できないため、ルータは同じ場所にルートを作成できませんでした。
Sooo ...おそらくコンパイラのパスですか?しかし、コンパイラパスはコンフィギュレーションへのアクセス権を持っていません...つまり、実際にはコンフィギュレーションをロードして手動で処理すれば良いですが、これが良いかどうかまだ分かりませんが、今このソリューションに向かっている。
それがルートを作成することになる:
私は、コントローラの工場でルート作成ロジックを置くべきか?しかし、私はサービスとしてコントローラを作成しており、工場は作成されたコントローラのserviceIdにアクセスすることができず、serviceIdはルートを作成するために必要です。
コントローラ自体には?つまり、注釈ルートがどのように機能するのか、それは実行可能な可能性があります。コントローラは私自身の
ControllerInterface
のようなものを実装しなければならないでしょう。方法はgetRoutes
で、外部サービス/コンパイラのパスはまずコントローラとしてサービスを作成してから、上記のコントローラからルートを取得して変更する必要があります。コントローラのserviceIdを追加してルータに追加してください...これはどうやら乱雑に見えます。その他のオプションはありますか?
コントローラーのこの特定のパターンに関する情報がかなり不足しています。
はあなたが要求ごとに行う必要があり、この何かか?それともコマンドで一度やり遂げることができるものなのでしょうか? – Cerad
あなたは何を参照していますか?コントローラーを作成するイベントについて質問する場合は、コンテナとルートを構築するときに一度だけ実行する必要があります。コントローラ(サービスとして)とルートは通常のようにSymfonyによってキャッシュされるべきです。 –
申し訳ありませんが、私は "コントローラの**定義**を作成した事例について聞いたら"を意味しました。 –