symfony 3 选择验证问题
symfony 3 choice validation issue
我有一个选择字段(下拉),我想根据数据库 table 对其进行验证。
基本上,如果该值在查询结果中,它就是有效的。
我不太清楚 Symfony 指南中报告的回调是如何工作的:(
但是,我有一个 validation.yml
文件:
User\UserBundle\Entity\Group:
properties:
role:
- Choice:
groups: [signUp]
callback: [User\UserBundle\Entity\Group, getRoles]
实体Group.php
class Group
{
/** @var int */
private $id;
//...
public static function GetRoles()
{
return ['admin', 'user'];
}
}
此示例运行良好,但当我尝试从组存储库中获取这些值时出现问题 GroupRepository.php
class GroupRepository extends EntityRepository
{
public function getRoles()
{
return $this->createQueryBuilder('r')
->getQuery()
->getResult();
}
}
在这个阶段我应该做什么?我使用的方法是否正确,还是应该直接在 validation.yml
中调用组存储库?还是我完全偏离了方向?
据我了解,您正在尝试从存储库中获取这些选项,例如:
...
callback: [User\UserBundle\Repository\GroupRepository, getRoles]
这行不通,因为存储库需要通过 Doctrine ORM 服务进行初始化。
我猜你必须创建一个自定义约束 class 和 ConstraintValidator,后者被配置为服务并将实体管理器作为参数传递。
见http://symfony.com/doc/current/validation/custom_constraint.html
我有一个选择字段(下拉),我想根据数据库 table 对其进行验证。
基本上,如果该值在查询结果中,它就是有效的。
我不太清楚 Symfony 指南中报告的回调是如何工作的:(
但是,我有一个 validation.yml
文件:
User\UserBundle\Entity\Group:
properties:
role:
- Choice:
groups: [signUp]
callback: [User\UserBundle\Entity\Group, getRoles]
实体Group.php
class Group
{
/** @var int */
private $id;
//...
public static function GetRoles()
{
return ['admin', 'user'];
}
}
此示例运行良好,但当我尝试从组存储库中获取这些值时出现问题 GroupRepository.php
class GroupRepository extends EntityRepository
{
public function getRoles()
{
return $this->createQueryBuilder('r')
->getQuery()
->getResult();
}
}
在这个阶段我应该做什么?我使用的方法是否正确,还是应该直接在 validation.yml
中调用组存储库?还是我完全偏离了方向?
据我了解,您正在尝试从存储库中获取这些选项,例如:
...
callback: [User\UserBundle\Repository\GroupRepository, getRoles]
这行不通,因为存储库需要通过 Doctrine ORM 服务进行初始化。
我猜你必须创建一个自定义约束 class 和 ConstraintValidator,后者被配置为服务并将实体管理器作为参数传递。
见http://symfony.com/doc/current/validation/custom_constraint.html