Symfony 2验证不是必需的字段,但只有有限的长度

时间:2014-12-02 18:10:51

标签: javascript php html validation symfony

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

我希望不使用js的解决方案。有人知道如何忽略symfony生成的必需属性吗?请帮我。谢谢

我的情况:我有一个slu field字段。它是由字段名称自动生成的(如果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>

学说映射

/**
 * @var string
 * @Gedmo\Slug(fields={"name"}, unique=false)
 * @ORM\Column(name="slug", type="string", length=100, nullable=true)
 */
private $slug;

2 个答案:

答案 0 :(得分:1)

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

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Your\Bundle\Entity\Whatever',
        'required' => false,
    ));
}

编辑:

如果您只想影响单个字段,请在表单类中执行以下操作:

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

答案 1 :(得分:-2)

要在字段上禁用“必需”,您需要...

在准备好的javascript文档上,您可以使用以下代码:

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