2017-09-01 14 views
-3

フォームイベントhttps://symfony.com/doc/current/form/events.htmlのsymfony公式ドキュメントを見ていました。symfonyフォームイベント

しかし、私はイベントの単純な定義以外のコンセプトをつかむことはできません。私がこれから得たものは、setData()が呼び出される前に、setData()が呼び出されてからFormEvents::POST_SET_DATAがトリガーされた後に、FormEvents::PRE_SET_DATAがトリガーされたものです。フォーム:: submit()が呼び出される前、間、後に、FormEvents::PRE_SUBMIT,FormEvents::SUBMIT & FormEvents::POST_SUBMITがトリガーされます。 Model、Norm、Viewデータの使い方についても混乱しています。

5人のすべてのイベントを実例で実演することはできますか?

答えて

0

イベントを使用して、条件付きでフォームを変更できます。私はあなたにすべての出来事のデモンストレーションをしませんが、ここでは一つです。イベントを使用して、エンティティタイプを特定のエンティティで埋めます。 (ProfileCategory型はEntityTypeを拡張します)。

$builder->addEventListener(
     FormEvents::PRE_SET_DATA, 
     function (FormEvent $event) use ($user) { 
      $form = $event->getForm(); 

      $formOptions = array(
       'class'   => ProfileCategory::class, 
       'query_builder' => function (EntityRepository $er) use ($user) { 
        // build a custom query 
        $user_id = $user->getId(); 
        $qb = $er->createQueryBuilder('pc'); 
        $qb->andWhere($qb->expr()->eq('pc.user', $user_id)); 
        return $qb; 
       }, 
       'label' => 'Categorie', 
       'expanded' => false, 
       'attr' => [ 
        'class' => 'profile-list' 
       ], 
      ); 

      $form->add('profileCategory', EntityType::class, $formOptions); 
     } 
); 
関連する問題