1

我在 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: ~

表格类型:

<?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';
    }


}
4

0 回答 0