2017-06-21 11 views
0

連絡フォームの場合、私は2つのエンティティを持っています。Symfonyフォーム検証EntityType

class ContactRequest 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    [...] 

    /** 
    * @ORM\ManyToOne(targetEntity="ContactCategory") 
    * @ORM\Column(name="type", type="integer") 
    */ 
    private $type; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="message", type="text", nullable=false) 
    */ 
    private $message; 


    [...] 


} 

、その後

class ContactCategory 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    [...] 


    public function __toString() 
    { 
     return $this->getName(); 
    } 
} 

私のフォーム

class ContactRequestType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('requesterFirstname', Type\TextType::class, array('label' => 'Prénom')) 
      ->add('requesterLastname', Type\TextType::class, array('label' => 'Nom')) 
      ->add('requesterMail', Type\EmailType::class, array('label' => 'Email')) 
      ->add('requesterPhone', Type\TextType::class, array('label' => 'Téléphone')) 
      ->add('message', Type\TextareaType::class, array('label' => 'Message')) 
      $builder->add('type', EntityType::class, [ 
       'class' => 'CargoApiBundle:ContactCategory', 
       'group_by' => 'group', 
       'query_builder' => function (EntityRepository $er) use ($options) { 
        return $er->createQueryBuilder('cc') 
         ->where('cc.site = :site')->setParameter('site', $options['site']) 
         ->orderBy('cc.group', 'ASC') 
         ->orderBy('cc.name', 'ASC'); 
       } 
      ]); 

    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'short' => false, 
      'site' => null, 
      'data_class' => 'Cargo\ApiBundle\Entity\ContactRequest' 
     ]); 
    } 
} 

表示がうまく動作しますが、私は自分のフォームを送信するとき、それはタイプフィールド上のエラーエンスロー "この値でなければなりません整数型の "となる。私の連絡先カテゴリのIDでなければならないので論理的です。

だから私は、フォームを見て、コードを生成し、間違って何も見つからなかっ:

<select id="contact_request_type" name="contact_request[type]" class="form-control"> 
    <optgroup label="Général"> 
     <option value="4">Autre</option> 
     <option value="3">Du partenariat/sponsoring</option> 
     <option value="1">Le fonctionnement de l'association</option> 
     <option value="2">Un tournoi internationnal</option> 
    </optgroup> 
    <optgroup label="Une section">[...]</optgroup> 
    <optgroup label="Le site">[...]</optgroup> 
</select> 

だから私は、提出されたものを見るために要求内容をダンプし、これを得た:

array (size=3) 
    'action' => string 'contact_send' (length=12) 
    'contact_request' => 
    array (size=7) 
     'requesterFirstname' => string 'Kiro' (length=5) 
     'requesterLastname' => string 'Staz' (length=4) 
     'requesterMail' => string '[email protected]' (length=18) 
     'requesterPhone' => string '0000000000' (length=10) 
     'type' => string '2' (length=1) 
     'message' => string 'test' (length=17) 
     '_token' => string '32LuZWWh8h-6lMlEShrjrs1w5HspaX0R4WikcGf5u3o' (length=43) 

マイ件のデータがrigthですcontact_request ['type']は文字列としてダンプされていますが、この問題は整数型である必要があります。

誰かが私に間違っていることを知らせることができますか?

カスタム制約バリデータはありません。

ありがとうございました!

+0

から

* @ORM\Column(name="type", type="integer") 

を削除しますか –

+0

Symfony 3.3.2とPHP 7.0.3 – SteveM

答えて

0

関連フィールドの注釈はありません。@Column Doctrineは、ContactCategoryプライマリキーの型に基づいているはずの列の種類を調べます。

あなたのSymfonyとPHPのバージョンは何ですか?ContactRequest::$type

+0

Erf ...私のエンティティのプロパティであるため、カテゴリを関連付けるときにアノテーションを削除するのを忘れました。 変更後、データベースを再作成してキャッシュをクリアしても、私はまだエラーがあります – SteveM

+0

作業を繰り返してくれました...ありがとうございます:) – SteveM

関連する問題