gpt4 book ai didi

validation - Symfony2 在自定义验证器中获取安全上下文

转载 作者:行者123 更新时间:2023-12-04 18:19:19 26 4
gpt4 key购买 nike

我正在构建一个自定义验证器。在 Controller 中,我将使用以下方法获取安全上下文:

$this->get('security.context')->getToken()->getUser()

我无法在自定义验证器中做同样的事情;谁能帮帮我?

非常感谢!

最佳答案

您要么需要扩展ContainerAware使用您的过滤器类,然后在实例化它或通过容器传递到构造上的类时调用该类的 setContainer。这是因为过滤器默认情况下不像 Controller 那样感知容器。

要通过构造函数执行此操作,您可以将 __construct 方法添加到您的过滤器类中,如下所示:

protected $container;

public function __construct($container){
$this->container = $container;
}

无论哪种方式,您都需要在通话中使用容器:
$this->container->get('security.context')->getToken()->getUser()

检查此链接 https://groups.google.com/forum/?fromgroups#!topic/symfony2/WWIc8N7KZrg对于为学说实体扩展容器感知的想法,可能会有所帮助。

编辑

看着 docs for validator如果服务有任何依赖项,您可以添加服务:
services:
validator.unique.your_validator_name:
class: Fully\Qualified\Validator\Class\Name
tags:
- { name: validator.constraint_validator, alias: alias_name }

为什么不为容器添加一个参数:
arguments:  [@security.context] 

然后使用构造方法?
protected $security_context;

public function __construct($security_context){
$this->security_context = $security_context;
}

关于validation - Symfony2 在自定义验证器中获取安全上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com