Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
通过服务名称使用Symfony自定义验证约束_Symfony_Symfony Forms_Symfony 2.8 - Fatal编程技术网

通过服务名称使用Symfony自定义验证约束

通过服务名称使用Symfony自定义验证约束,symfony,symfony-forms,symfony-2.8,Symfony,Symfony Forms,Symfony 2.8,我已创建以下自定义验证约束: validator.constraint.user.email_unicity: class: AppBundle\Validator\Constraints\User\EmailUnicityValidator tags: - { name: validator.constraint_validator, alias: user_email_unicity_validator } 我将其添加到我的字段中,如下所示: AppBund

我已创建以下自定义验证约束:

validator.constraint.user.email_unicity:
    class: AppBundle\Validator\Constraints\User\EmailUnicityValidator
    tags:
        - { name: validator.constraint_validator, alias: user_email_unicity_validator }
我将其添加到我的字段中,如下所示:

AppBundle\Security\User\WebserviceUser:
    properties:
        email:
            - AppBundle\Validator\Constraints\User\EmailUnicity: ~
但是我想通过使用约束的别名来避免使用类的完整路径,但没有找到正确的方法。诸如此类:

AppBundle\Security\User\WebserviceUser:
    properties:
        email:
            - user_email_unicity_validator: ~

在这两种情况下,我都得到了以下例外:

试图从命名空间“\Symfony\Component\Validator\Constraints”加载类“[别名]”。 您是否忘记了另一个名称空间的“use”语句

有办法吗

谢谢大家!:)

[编辑2015/12/10]

我尝试使用以下别名,但没有更好(相同的异常消息):

[编辑2015/12/11]

以下是我的代码详细信息:

# AppBundle\Validator\Constraints\User\EmailUnicity.php
namespace AppBundle\Validator\Constraints\User;

use Symfony\Component\Validator\Constraint;

class EmailUnicity extends Constraint
{
    public $messageMatchesFound = '[...]';

    public function validatedBy()
    {
        return 'user_email_unicity_validator';
    }
}


放下@,它应该会工作。别名不再是服务id。事实上,这是我尝试的第一件事。事实上,我遇到了以下错误:“试图从命名空间“\Symfony\Component\validator\Constraints”加载类“user\u email\u unicity\u validator”。是否忘记了另一个命名空间的“use”语句?”。使用此别名“User\EmailUnicityValidator”时出现相同错误。该别名是正确的条目。在约束类中必须遵循某些约定。我所能建议的就是通过docs()中的示例,然后尝试重命名为you类。有点猜测validatedBy方法可能没有返回正确的值。Msybe发布你课程的相关部分。我更新了我的帖子,提供了更多细节。非常感谢你的帮助Cerad!放下@,它应该会工作。别名不再是服务id。事实上,这是我尝试的第一件事。事实上,我遇到了以下错误:“试图从命名空间“\Symfony\Component\validator\Constraints”加载类“user\u email\u unicity\u validator”。是否忘记了另一个命名空间的“use”语句?”。使用此别名“User\EmailUnicityValidator”时出现相同错误。该别名是正确的条目。在约束类中必须遵循某些约定。我所能建议的就是通过docs()中的示例,然后尝试重命名为you类。有点猜测validatedBy方法可能没有返回正确的值。Msybe发布你课程的相关部分。我更新了我的帖子,提供了更多细节。非常感谢你的帮助Cerad!
{ name: validator.constraint_validator, alias: User\EmailUnicityValidator }
# AppBundle\Validator\Constraints\User\EmailUnicity.php
namespace AppBundle\Validator\Constraints\User;

use Symfony\Component\Validator\Constraint;

class EmailUnicity extends Constraint
{
    public $messageMatchesFound = '[...]';

    public function validatedBy()
    {
        return 'user_email_unicity_validator';
    }
}
# AppBundle\Validator\Constraints\User\EmailUnicityValidator.php
namespace AppBundle\Validator\Constraints\User;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class EmailUnicityValidator extends ConstraintValidator
{
    public function validate($email, Constraint $constraint)
    {
        [...]
    }
}