在预先填充的表单字段上进行验证

时间:2012-11-14 06:15:19

标签: symfony symfony-forms symfony-2.1

要在symfony2中的表单字段中设置默认值,我会使用与{j}结合的rel属性作为精美解释here

    $builder->add('title', 'text', array(
        'attr'=> array(
            'class'=>'prepopulate',
            'rel'=>'Enter a title here...',
        )
    ));

这非常有效,并提供以下内容:


enter image description here


如您所见,该字段预填充了“在此处输入标题...”。如果我按原样验证表单,则不会在插入默认值时进行验证(这是有意义的)。

我想确保用户自定义此字段,而不只是提交具有默认值的表单...

有没有办法检查该字段是否与rel属性值相同?

2 个答案:

答案 0 :(得分:1)

嗯...

您可以在实体的注释中尝试此操作:

@Assert\Regex("/^(?!Enter a title here\.\.\.)/")

甚至更好:

/**
 * @Assert\Regex(
 *     pattern="/^Enter a title here\.\.\.$/",
 *     match=false,
 *     message="Please enter a title."
 * )
 */

答案 1 :(得分:1)

我们可以在客户端执行此操作,并将rel属性与提交的数据进行比较。如果值相同,我们清除对象:

$(function() {
    // When we submit the form
    $('form').submit(function() {

        //iterate over all the elements of the class "prepopulate"
        jQuery('.prepopulate').each(function(){

            //compare the values submitted vs rel attribute
            if( jQuery(this).val() == jQuery(this).attr('rel'))
                jQuery(this).val('');
        });
        return true; 
    });
});