symfony2 завершается с ошибкой. Это значение не должно быть нулевым.

Я работаю с формой symfony2, и теперь я получаю сообщение «Это значение не должно быть нулевым».. Теперь «ЭТО ЗНАЧЕНИЕ».. что это за значение? а как разобраться?

Сбрасывая ошибки: ($form->getErrors()) я получаю

array (size=3)
  0 => 
    object(Symfony\Component\Form\FormError)[2418]
      protected 'messageTemplate' => string 'This value should not be null.' (length=30)
      protected 'messageParameters' => 
        array (size=0)
          empty
      protected 'messagePluralization' => null
  1 => 
    object(Symfony\Component\Form\FormError)[2420]
      protected 'messageTemplate' => string 'This value should not be null.' (length=30)
      protected 'messageParameters' => 
        array (size=0)
          empty
      protected 'messagePluralization' => null
  2 => 
    object(Symfony\Component\Form\FormError)[2421]
      protected 'messageTemplate' => string 'This value should not be null.' (length=30)
      protected 'messageParameters' => 
        array (size=0)
          empty
      protected 'messagePluralization' => null

После переключения некоторых утверждений одна ошибка formError исчезла. Что по:

 /**
  * @ORM\Column(type="integer")
  * @Assert\NotNull()
  */
 protected $price;

var_dump( $reservation->getPrice(), is_null( $reservation->getPrice() ) );

Результат:

float 733

boolean false

Но в утверждениях это ошибка..

Сбои на объекте:

/**
 * @ORM\Column(type="integer")
 * @Assert\NotNull()
 */
protected $price;

/**
* @ORM\ManyToOne(targetEntity="Caravan", inversedBy="caravan")
* @ORM\JoinColumn(name="caravan_id", referencedColumnName="id")
* @Assert\NotNull()
*/
protected $caravan;

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

Это 3 свойства, которые я установил в контроллере ДО проверки isValid. Если я это сделаю:

$form->getData();

У него правильные данные.


person Mitchel Verschoof    schedule 25.11.2012    source источник
comment
Пожалуйста, предоставьте дамп формы и любые связанные фильтры.   -  person Mike Samuel    schedule 25.11.2012


Ответы (1)


Проблема заключалась в следующем:

Не будет работать:

$form->bind( $request );

$reservation->setCreated( new \DateTime() );

if( $form->isValid() ){

}

Будет работать:

$reservation->setCreated( new \DateTime() );

$form->bind( $request );

if( $form->isValid() ){

}

Когда форма свяжется, он проверит, действителен он или нет. Так что после этого он не будет проверять это снова.

Так что небольшой совет, привяжите его в последний момент перед проверкой isValid =)

person Mitchel Verschoof    schedule 25.11.2012