Javascript Symfony 2验证一个非必填字段,但其长度有限

Javascript Symfony 2验证一个非必填字段,但其长度有限,javascript,php,html,validation,symfony,Javascript,Php,Html,Validation,Symfony,我试图验证一个非必填字段,但其长度仅为0-50。但是Symfony总是生成必需的属性,如下代码所示。这使得用户必须填写必填字段。 这是一个服务器验证。此外,由于不需要的required属性,我在客户端验证方面也遇到了问题 我希望有一个不使用js的解决方案。有人知道如何忽略symfony生成的属性required吗?请帮帮我。多谢各位 我的情况是:我有一个弹头场。它是由字段名自动生成的(若slug为空),或者用户可以自己生成。 在loadMetadata方法中,属性slug只有1个约束 $meta

我试图验证一个非必填字段,但其长度仅为0-50。但是Symfony总是生成必需的属性,如下代码所示。这使得用户必须填写必填字段。 这是一个服务器验证。此外,由于不需要的required属性,我在客户端验证方面也遇到了问题

我希望有一个不使用js的解决方案。有人知道如何忽略symfony生成的属性required吗?请帮帮我。多谢各位

我的情况是:我有一个弹头场。它是由字段名自动生成的(若slug为空),或者用户可以自己生成。 在loadMetadata方法中,属性slug只有1个约束

$metadata->addPropertyConstraint('slug', new Length(array(
        'min' => 0, 'max' => 50
    )));
Html输出

<textarea id="category_slug" 
name="category[slug]" required="required" class="form-control"></textarea>
要在需要的字段上禁用“必需”

在javascript文档ready上,您可以使用以下代码:

$('#category_slug').removeAttr('required');

如果表单是在表单类中描述的,则可以将其包含在类中:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Your\Bundle\Entity\Whatever',
        'required' => false,
    ));
}
编辑: 如果只想影响单个字段,请在表单类中执行以下操作:

->add('slug', null, array(
    'required' => false,
)

当然在页面加载后使用js从标签中删除所需内容=)谢谢您的回答。但是您知道不使用js的其他解决方案吗?
slug
属性在实体文件中有任何约束吗?如果它被标记为
NotBlank
,您将获得
required=“required”
属性。我认为您唯一的选择是使用JS,正如symfony2文档所说,如果需要,它同时位于服务器端和客户端。它只有一个约束长度和原则映射nullable=trueThank you。但它也会禁用其他字段SNO的验证。不应删除属性,而应首先防止添加该属性。
->add('slug', null, array(
    'required' => false,
)