2017-08-21 8 views
0

「ヌル与えられた、文字列型でなければなりません」、私はNotBlankアサートを持つエンティティがあります。NotBlankアサートとsymfony 3.3で

class UserContributorVersion 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(type="string") 
    * @Assert\NotBlank() 
    */ 
    private $name; 

    /** 
    * Set name 
    * 
    * @param string $name 
    */ 
    public function setName(string $name) 
    { 
     $this->name = $name; 
    } 
} 

をしかし、私はNOVALIDATE属性でフォームを確認した場合、私はこのエラーがあります: AppBundle \エンティティ\ UserContributorVersionに渡さ

引数1 ::のsetName()なぜ力SETN、私は理解していないヌル

与えられた、文字列型でなければなりません私がNotBlankをアサートした場合、ame(string $ name = null)?

ありがとうございました:)

+1

データを挿入せずに送信ボタンを押しただけの場合、フィールドはNULLになり、文字列が必要であることをタイプヒントにします –

答えて

1

フォームデータに対して検証が実行されます。フォームが何らかのエンティティ(オプションdata_classが設定されている)の場合、フォームデータは変更する必要のあるエンティティです。検証は、リクエスト値が(あなたのケースのエンティティの)フィールドのデータを形成するように設定された後に実行されます。

フォームを見つけることができますが、ここで流れを提出: https://symfony.com/doc/current/form/events.html#submitting-a-form-formevents-pre-submit-formevents-submit-and-formevents-post-submit

enter image description here

検証はFormEvents::POST_SUBMITイベントとして登録されています。要求値は、POST_SUBMITイベントの直前にデータを形成するように設定されています。

+0

ありがとうございます。エンティティのsetName()にformTypeにアサートを追加し(エンティティで削除する)、または「= null」を追加しますか? :)ありがとう –

+1

私は2番目の –

関連する問題