Forms 表单和必需属性

Forms 表单和必需属性,forms,symfony,Forms,Symfony,我想知道一些事情。也许这是Symfony中的一个bug,我不知道: 假设一个产品对象: class Product { private $id; private $name; private $price; private $description; } 我用这个对象构建了一个表单。这是我的验证文件: myVendor\myBundle\Entity\Product: properties: name: - NotBlank: ~

我想知道一些事情。也许这是Symfony中的一个bug,我不知道:

假设一个产品对象:

class Product
{
    private $id;
    private $name;
    private $price;
    private $description;
}
我用这个对象构建了一个表单。这是我的验证文件:

myVendor\myBundle\Entity\Product:
  properties:
    name:
      - NotBlank: ~
    price:
      - NotBlank: ~
这是我的formbuilder:

$builder->add('name', 'text', array('label' => $this->translator->trans('product.demo.name')));
$builder->add('price', 'money', array(
        'label' => $this->translator->trans('product.demo.price'),
        'invalid_message' => $this->translator->trans('product.demo.validation.price.error')
    ));
$builder->add('description', 'textarea', array('label' => $this->translator->trans('product.demo.description')));
生成表单时,字段的3个区域具有必需的属性。。。甚至是不需要的描述

如果我停用HTML5,它工作得很好,因为Symfony查看验证文件,发现描述字段不是必需的

但是如果激活了HTML5,则由于required属性,需要一个描述值

这是Symfony在默认情况下生成具有必需属性的字段的错误还是什么

能修好吗

多谢各位


附言:我和symfony2.2一起工作。。。看起来此版本已找到并提供了解决方案,但问题仍然存在。默认情况下,每个Symfony2表单类型的
必需
选项都设置为
true
, 无论您在验证中使用了什么
Assert

所需的选项只是一个“很好拥有”的特性,不能进行真正的服务器端验证。这是验证
断言的角色

只需在您的描述中添加
required=false

$builder->add('description', 
              'textarea', array(
                 'label' => $this->translator->trans('product.demo.description'),
                 'required' => false
              ));

默认情况下,每个Symfony2表单类型的
必需
选项设置为
, 无论您在验证中使用了什么
Assert

所需的选项只是一个“很好拥有”的特性,不能进行真正的服务器端验证。这是验证
断言的角色

只需在您的描述中添加
required=false

$builder->add('description', 
              'textarea', array(
                 'label' => $this->translator->trans('product.demo.description'),
                 'required' => false
              ));