私はfosユーザーバンドルとpugxマルチユーザーバンドルを使用しています。 私はすべてのドキュメントを読みましたが、私はSymfonyを初めて使用しています。 pugxマルチユーザバンドルには、すべてのポイントが1つのサンプルがありますが、1つはsucessful登録です。 生成フォーム用のコントローラをオーバーライドする成功した登録にどのように役割を割り当てるか?
- サンプル=> OK
- 生成フォームのテンプレートをオーバーライドのサンプル=> OK
- 正常に登録サンプル=>何をオーバーライドするサンプル。
class RegistrationController extends BaseController { public function registerAction(Request $request) { $response = parent::registerAction($request); return $response; } public function registerTeacherAction() { return $this->container ->get('pugx_multi_user.registration_manager') ->register('MyBundle\Entity\PersonTeacher'); } public function registerStudentAction() { return $this->container ->get('pugx_multi_user.registration_manager') ->register('MyBundle\Entity\PersonStudent'); } }
問題がマネージャを返す
->get('pugx_multi_user.registration_manager')
である:
は、ここに私のコードです。 fos user overring controllers helpには、form
またはform.handler
のいずれかが入ります。私はpugx_multi_userのマネージャーとそれらを "リンク"するのは難しい時があります。
は、私は先生のための役割を設定するregisterTeacherAction()
にどのようなコードを入れなければならない、とregisterStudentAction()
に成功した登録に学生のための役割を設定しますか?
「重要なことは、リスナーがアプリケーション内のすべてのエンティティをリッスンすることです。」...これは、永続化アクションがあるたびに、この関数は呼び出されますか?もしそうなら、そう言い訳がありますが、生徒や教師を登録するときのちょっとした行動のためにはちょっとしたことです...それはナットを裂くためのハンマーです。他に方法がないと確信していますか? –
それは間違いなくデカップリングの点では良い方法です。 1-2の小さな 'instanceof'チェックインが本当にあなたを遅らせることはありません。それはあなたのためによく聞こえる場合は、[ライフサイクルコールバック](http://symfony.com/doc/current/book/doctrine.html#lifecycle-callbacks)を使用して、エンティティに直接役割追加を統合することもできます。うーん、いくつかの方法があります、RegistrationControllerをオーバーライドし、成功した登録のイベントを発射してください... – nifr
それです!私は抽象クラスである 'Person'と' Person'を実装する 'PersonTeacher'と' Person'を実装するPersonStudentを持っています。だから私は、各クラスのためのカスタム "ライフサイクル"コールバックを追加し、それはトリックを行う必要があります。あなたの答えにあなたのコメントを追加してもらえますか?これは誰でもこれを読むのに役立ちます。どうもありがとうございます。 –