2016-02-23 21 views
0

我有一個窗體(多個)datepicker(jquery)。

當我提交表單時,$ form-> getData()不返回日期的值。 $ form-> isValid()返回false。我設置的任何類型的值,getData()和isValid()都是false!

但是,當我用這個:

$postData = $request->request->get('place_edit_'.$placeId); 

它返回所有的上傳數據,日期值好!

$postData = $request->request->get('euro2016_place_edit_'.$placeId); 
$em = $this->getDoctrine()->getManager(); 
// some code here 

// get place to update 
$repository = $em->getRepository('xxx:xxx:xxx'); 
$place = $repository->find($placeId); 
$form = $this->createForm(new PlaceType($em, $place, $stadium), $place); 
$form->handleRequest($request); 
// some code here 
$formPlace = $form->getData(); 
/* 
* $formPlace->setBirthDate(new \DateTime($postData['birthDate'])); 
* $em = $this->getDoctrine()->getManager(); 
* $em->persist($formPlace); 
* $em->flush(); 
*/ 
if ($form->isValid()) { 

這裏表單生成器:

use ... ... Form\Type\BasicPlaceType; 

/** 
* Class PlaceType 
*/ 
class PlaceType extends BasicPlaceType 
{ 

    /** 
    * @param FormBuilderInterface $builder 
    * @param array    $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 
     $builder 
      ->add('save', 'submit', array(
       'label' => 'content.save', 
       'attr' => array(
       'value' => 'save', 
       ), 
      )) 
      ->add('submit', 'submit', array(
       'validation_groups' => array('Strict'), 
       'label' => 'content.submit', 
       'attr' => array(
       'value' => 'submit', 
       ), 
      )) 
      ->add('actionType', 'hidden', array(
       'mapped' => false, 
      )) 
     ; 
    } 

    /** 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => '\Entity\Place', 
      'attr' => ['id' => $this->getName()."_form"], 
     )); 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'place_edit_'.$this->place->getId(); 
    } 
} 

和BasicPlaceType部分:

... 
       ->add('birthDate', 'genemu_jquerydate', array(
       'required' => false, 
       'label' => 'content.birthdate', 
       'widget' => 'single_text', 
       'mapped' => true, 
       'format' => 'dd-MM-yyyy', 
       'attr' => $attr, 
      )) 
... 

所以,我的問題是:爲什麼的getData()不返回值(和isValid()返回false)

+2

你能提供你的'PlaceType'的源代碼嗎? – Heah

回答