2014-06-13 38 views
0

我創建了一個表格IntroUserType有兩個內嵌形式IntroNameTypeIntroInfoType有關的東西表單驗證錯誤是空白。Symfony的 - 雖然所有字段中輸入

當我提交表單,所有字段填寫,我獲得

string 'ERROR: This value should not be blank. 
' (length=39) 

這裏是我的形式:

IntroUserType

class IntroUserType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add("name", new IntroNameType()) 
      ->add("info", new IntroInfoType()) 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults([ 
      "data_class" => null, 
      "cascade_validation" => true 
     ]); 
    } 

    public function getName() 
    { 
     return "intro_user_type"; 
    } 
} 

IntroInfoType

class IntroInfoType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add("birthday", "birthday") 
      ->add("gender", "choice",[ 
       "expanded" => true, 
       "choices" => array(
        "0" => "Male", 
        "1" => "Female" 
       ) 
      ]) 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults([ 
      "data_class" => "Zgh\FEBundle\Entity\UserInfo" 
     ]); 
    } 

    public function getName() 
    { 
     return "intro_info_type"; 
    } 
} 

IntroNameType

class IntroNameType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add("firstname", "text") 
      ->add("lastname", "text") 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults([ 
      "data_class" => "Zgh\FEBundle\Entity\User" 
     ]); 
    } 

    public function getName() 
    { 
     return "intro_name_type"; 
    } 
} 

這是我的觀點:

{{ form_start(form, {"action": url("zgh_fe.user_profile.user_post_intro_edit", {"id": app.user.id})}) }} 
    <div class="form-group"> 
     {{ form_label(form.name.firstname) }} 
     {{ form_widget(form.name.firstname, {"attr": {"class": "form-control", "placeholder": "First name"} }) }} 
     <div class="validation" style="">{{ form_errors(form.name.firstname) }}</div> 
    </div> 
    <div class="form-group"> 
     {{ form_label(form.name.lastname) }} 
     {{ form_widget(form.name.lastname, {"attr": {"class": "form-control", "placeholder": "Last name"} }) }} 
     <div class="validation" style="">{{ form_errors(form.name.lastname) }}</div> 
    </div> 
    <div class="form-group"> 
     {{ form_label(form.info.birthday) }} 
     {{ form_widget(form.info.birthday) }} 
     <div class="validation" style="">{{ form_errors(form.info.birthday) }}</div> 
    </div> 
    <div class="form-group "> 
     {{ form_label(form.info.gender) }} 
     {{ form_widget(form.info.gender) }} 
     <div class="validation" style="">{{ form_errors(form.info.gender) }}</div> 

    </div> 
    <div class="row"> 
     <input type="submit" name="submit" class="btn btn-danger btn-wide pull-right" value="Submit" /> 
    </div> 
    {{ form_rest(form) }} 
{{ form_end(form) }} 

編輯

這裏是我的實體:

User

class User extends BaseUser 
{ 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="firstname", type="string", length=255) 
    * @Assert\NotBlank() 
    */ 
    protected $firstname; 

    // .. 

/** 
* @var string 
* 
* @ORM\Column(name="lastname", type="string", length=255) 
* @Assert\NotBlank() 
*/ 
protected $lastname; 

UserInfo

class UserInfo 
{ 
    use BasicInfo; 

    /** 
    * @ORM\Column(type="datetime") 
    * @Assert\NotBlank 
    */ 
    protected $birthday; 

    /** 
    * @ORM\Column(type="boolean") 
    * @Assert\NotBlank 
    */ 
    protected $gender; 

    // .. 
+0

難道說你缺少的是不能爲空實體領域之一? – dmnptr

+0

@dmnptr我編輯了我的問題與實體,請看看它。謝謝。 –

回答

0

試圖將$form->isValid()檢查的else子句中的輸出格式錯誤:

if ($form->isValid()) 
{ 
    //........ 
} 
else 
{ 
    die(nl2br($form->getErrorsAsString())); 
} 

這應該給你一個字段名稱爲空白。

+0

問題是該錯誤不顯示它的用途。不像其他所有驗證錯誤。 –

+0

我可以看看你的二傳手嗎? – dmnptr