2017-09-21 4 views
0

私はsymfonyでフォームをオーバーライドしようとしています。サードパーティのバンドルは、これは、サードパーティのバンドルですprivate-message-bundle : firediyサードパーティバンドルフォームをオーバーライドする方法 - symfony

あるフォーム:

 $builder 
     ->add('recipients', null, array(
      'label'    => 'form.recipients', 
      'translation_domain' => 'FDPrivateMessageBundle', 
     )) 
     ->add('subject', null, array(
      'label'    => 'form.subject', 
      'translation_domain' => 'FDPrivateMessageBundle', 
     )) 
     ->add('firstMessage', PrivateMessageType::class, array(
      'label' => false, 
     )); 

->add recipients一部は、すべてのユーザーを返し、私はそれらのいくつかを選択するようにするためにそれらを示しています。私はバンドルにデフォルトで1つの受信者を与えることができるようにしたい。私はForm下のクラスConversationTypeを作成しようとしましたし、次のコード書いている:

$builder->add('recipients', EntityType::class, array(
     'class'   => 'AppBundle:User', 
     'multiple'  => true, 
     'query_builder' => function(EntityRepository $er) { 
      return $er->createQueryBuilder('u') 
       ->where('u.id', $id); 
     }, 
     ..... 
    )); 

をしかし、私は作っ何も変更が行われていないため、クラスは、バンドルをオーバーライドしているとは思いません。

これを行う正しい方法は何ですか?私の質問が十分明確でない場合は、私に知らせてください。 お時間をいただきありがとうございます。

+0

バンドルはフォームをオーバーライドする手段を提供するので、簡単に行うことができます。完全なConversationTypeクラスをコピーして貼り付けることはできますか? – Strnm

+0

私は@ Strnmを試しました。変更は行われません。私は自分の投稿した内容に基づいて – maestro

+0

を明確にするために質問を編集しました。私はあなたにあなたのConversationTypeクラスとservices.ymlの完全な内容であなたの質問を更新してください。 – Strnm

答えて

0

フォームフィールドを上書きまたは拡張されているかの同様の例があります:http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.html

例はFosUserレジスタフォームをオーバーライドに基づいています:

<?php 
// src/AppBundle/Form/RegistrationType.php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class RegistrationType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('name'); 
    } 

    public function getParent() 
    { 
     return 'FOS\UserBundle\Form\Type\RegistrationFormType'; 

     // Or for Symfony < 2.8 
     // return 'fos_user_registration'; 
    } 

    public function getBlockPrefix() 
    { 
     return 'app_user_registration'; 
    } 

    // For Symfony 2.x 
    public function getName() 
    { 
     return $this->getBlockPrefix(); 
    } 
} 

あなたが親フォームを指定する必要があります見ることができるようにあなたは拡大したい。

関連する問題