通过服务名称使用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)
{
[...]
}
}