Symfony类型验证不起作用 - 始终返回'此值不应为空白'

时间:2013-03-21 23:28:15

标签: forms symfony

我在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';
    }


}

0 个答案:

没有答案