我在2.1.7中遇到Symfony表单验证方面的问题。
当我将数据绑定到表单时,我得到的所有错误都是“这个值不应该是空白的” - 我无法解决我出错的地方?如果数据无效,似乎数据没有绑定到表单,但它不是给我预期的错误,而是将其视为空白。
即。对于起始字段,我提交一个字符串“这应该是一个日期” - 我得到的错误是NotBlank,其中应该是非日期。
当单步执行表单绑定过程时,我注意到以下内容:
当Form/Form.php
点击以下行时,提交的日期数据(字符串 - “2013-01-01”)被设置为空数组 - 一旦循环被数组键击中显然没有设定,这是问题似乎源于何处。
如果我将字段设置为int,然后提交一个字符串,viewToNorm
方法会抛出一个错误,当捕获集synchronized = false
并且未绑定modelData和normData时。
实体:
namespace HvH\DealsBundle\Entity;
class Deal
{
private $name;
private $start;
// getters and setters here...
}
验证
# src/HvH/DealsBundle/Resources/config/validation.yml
HvH\DealsBundle\Entity\Deal:
properties:
name:
- NotBlank: ~
- Type:
type: string
start:
- NotBlank: ~
- Date: ~
FormType:
<?php
namespace HvH\DealsBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class DealType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, array('description' => 'name'))
->add('start', null, array('description' => 'start'))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'HvH\DealsBundle\Entity\Deal',
'csrf_protection' => false,
'cascade_validation' => false // have also tried this with true
));
}
public function getName()
{
return 'deal';
}
}