gpt4 book ai didi

php - 如何在 Symfony 2 的类中获取 Request 对象?

转载 作者:可可西里 更新时间:2023-10-31 23:58:33 24 4
gpt4 key购买 nike

我在 Symfony 中有一个实现接口(interface)的类。我需要有 $request 才能有 POST 参数。这是我的功能:

class WebserviceUserProvider implements UserProviderInterface
{
public function loadUserByUsername($username)
{
$salt = "";
$roles = "";
// make a call to your webservice here

.....
}
...
}

我不能这样做:

public function loadUserByUsername($username, Request $request)

因为我需要实现接口(interface),我得到了这个错误:

FatalErrorException: Compile Error: Declaration of Actas\Gestion\UserBundle\Security\User\WebserviceUserProvider::loadUserByUsername() must be compatible with Symfony\Component\Security\Core\User\UserProviderInterface::loadUserByUsername($username)

如何获取请求参数?此类从登录调用,我需要它发送的密码才能使用 WebService 对用户进行身份验证。

非常感谢您!

这是我在 Bundle 中的 services.xml:

# src/Actas/Gestion/UserBundle/Resources/config/services.yml
parameters:
webservice_user_provider.class: Actas\Gestion\UserBundle\Security\User\WebserviceUserProvider

services:
webservice_user_provider:
class: "%webservice_user_provider.class%"
scope: container
calls:
- [setServiceContainer , ["@service_container"]]

最佳答案

除了 Czechnology 的答案之外,您还可以使用 setter 方法注入(inject)请求。在 services.yml 添加:

my_service:
class: Acme\DemoBundle\Service\WebserviceUserProvider
scope: request
calls:
- [setRequest , ["@request"]]

然后像这样声明你的类:

use Symfony\Component\HttpFoundation\Request;

class WebserviceUserProvider implements UserProviderInterface {
private $request;
public function setRequest( Request $request ) {

$this->request = $request;
}
// ...
}

如果您遇到范围扩大问题,您还可以尝试注入(inject)服务容器并从中获取请求。在服务中这样声明您的服务:

my_service:
class: Acme\DemoBundle\Service\WebserviceUserProvider
calls:
- [setRequest , ["@service_container"]]

现在只需使用容器来获取请求:

use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;

class WebserviceUserProvider implements UserProviderInterface {
private $request;
public function setRequest( ContainerInterface $container ) {

$this->request = $container->get('request');
}
// ...
}

关于php - 如何在 Symfony 2 的类中获取 Request 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392215/

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