Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2表格-比较两个字段_Php_Symfony - Fatal编程技术网

Php Symfony 2表格-比较两个字段

Php Symfony 2表格-比较两个字段,php,symfony,Php,Symfony,我的项目中有这样的代码: ->add('email', 'text', array( 'translation_domain' => 'KlientRejestracja', 'label' => 'E-mail (login):', 'constraints' => array( new NotBlank(array('message' => 'emailisNotValid')), new Email(ar

我的项目中有这样的代码:

->add('email', 'text', array(
    'translation_domain' => 'KlientRejestracja',
    'label' => 'E-mail (login):',
    'constraints' => array(
        new NotBlank(array('message' => 'emailisNotValid')),
        new Email(array('message' => 'emailisNotValid')),
    )
))
->add('nick', 'text', array(
    'label' => 'Podaj pseudonim<span style="color: red">*</span>:',
    'translation_domain' => 'KlientRejestracja',
    'required'   => false,
    'empty_data' => '',
    'constraints' => array(
        new NotEqualTo(array('value' => '??????','message' => 'imieisNotValid'))
    )               
))
->添加('email','text',数组(
“translation_domain”=>“KlientRejestracja”,
'标签'=>'电子邮件(登录):',
'约束'=>数组(
新建NotBlank(数组('message'=>'emailisNotValid')),
新电子邮件(数组('message'=>'emailisNotValid')),
)
))
->添加('nick','text',数组(
'label'=>'Podaj pseudonim*:',
“translation_domain”=>“KlientRejestracja”,
“必需”=>false,
“空_数据”=>“”,
'约束'=>数组(
新的NotEqualTo(数组('value'=>'???','message'=>'imeisnotvalid'))
)               
))
如何比较“email”和“nick”字段,以检查它们是否不相同?
我尝试使用NotEqualTo,但我不知道比较值应该是什么。

将回调验证器添加到数据类

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface;

class xxx
{
...
    /**
     * @Assert\Callback()
     */
    public function validate(ExecutionContextInterface $context, $payload)
    {
        if ($this->email == $this->nick) {
            $context->buildViolation('error text')
                ->atPath('email')
                ->addViolation();
        }
    }
...
}

一种非常简单且严格的方法是使用表达式语言的断言,它不需要回调或自定义验证器。听起来很复杂,但事实并非如此——请参见示例


该示例使用注释,但正如您在上面所写,您使用的是
data\u class
,您应该能够在表单类型中执行相同的操作。

您是否将此表单与数据类一起使用?是的,我使用的数据类正如Max所说,您可以使用回调或