0

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

假设一个 Product 对象:

class Product
{
    private $id;
    private $name;
    private $price;
    private $description;
}

我用这个对象构建了一个表单。这是我的验证文件:

myVendor\myBundle\Entity\Product:
  properties:
    name:
      - NotBlank: ~
    price:
      - NotBlank: ~

这是我的表单生成器:

$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 默认生成具有必需属性的字段的错误还是什么...

可以修吗?

谢谢

PS:我使用 Symfony 2.2...看起来已经找到了解决方案并随此版本交付,但问题仍然存在

4

1 回答 1

3

默认情况下,每个 Symfony2 表单类型都将required选项设置为true,无论您在验证中有什么Assert

http://symfony.com/doc/master/book/forms.html#field-type-options

required 选项只是一个“值得拥有”的功能,并不进行真正的服务器端验证。这是你验证的作用Assert

required=false你的描述写上:

$builder->add('description', 
              'textarea', array(
                 'label' => $this->translator->trans('product.demo.description'),
                 'required' => false
              ));
于 2013-04-10T14:15:40.367 回答