2

我正在使用 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;

这些是我在 isValid 检查之前在控制器中设置的 3 个属性。如果我这样做:

$form->getData();

它有正确的数据。

4

1 回答 1

0

问题是:

不管用:

$form->bind( $request );

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

if( $form->isValid() ){

}

将工作:

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

$form->bind( $request );

if( $form->isValid() ){

}

当表单绑定时,他将检查他是否有效。所以在那之后他不会再检查它了。

所以一点建议,在isValid检查前的最后一刻绑定它=)

于 2012-11-25T22:55:49.947 回答