簡體   English   中英

無法自動裝配參數 $request

[英]Cannot autowire argument $request

我的 controller 看起來像:

use Psr\Http\Message\ServerRequestInterface;

class HelloController extends AbstractController
{
    public function __invoke(ServerRequestInterface $request): Response
    {
        dd($request)
        return $this->json([]);
    }

轉到此 controller 的 URL 后,我收到以下錯誤:

Cannot autowire argument $request of "HelloController()": it references interface "Psr\Http\Message\ServerRequestInterface" but no such service exists. Did you create a class that implements this interface?

我的 composer.json 看起來像:

{
    "type": "project",
    "license": "proprietary",
    "require": {
        "php": "^7.4",
        "nyholm/psr7": "^1.1",
        "psr/http-client": "^1.0",
        "sensio/framework-extra-bundle": "^6.1",
        "symfony/asset": "^4.1",
        "symfony/flex": "^1.0",
        "symfony/framework-bundle": "^4.1",
        "symfony/messenger": "^4.1",
        "symfony/psr-http-message-bridge": "^1.0",
        "symfony/security-bundle": "^4.1",
        "symfony/yaml": "^4.1",
        "php-http/httplug": "^2.0",
        "php-http/guzzle6-adapter": "^2.0",
        "guzzlehttp/psr7": "^1.5"
    },

我沒有在services.yaml文件中設置任何內容。

嘗試這樣的事情:

use Symfony\Component\HttpFoundation\Request;

class HelloController extends AbstractController
{
    public function someAction(Request $request): Response
    {
        dd($request)
        return $this->json([]);
    }

這就是您在 Symfony 4.x 版本上檢索請求堆棧的方式。

use Symfony\Component\HttpFoundation\RequestStack;

class HelloController 
{      

  public function __construct(RequestStack $requestStack)
  {
      $request = $requestStack->getCurrentRequest();
  }

} 

以上摘自這里:- https://symfony.com/doc/4.4/service_container/request.html

HttpFoundation請求 object 到 PSR7 ServerRequestInterface實現轉換由SensioFrameworkExtraBundle執行。

但是在v6 中刪除了支持

降級到v5.5或切換到替代方案。

以下捆綁包提供了已刪除的功能,並且基於原始實現。

https://github.com/ajgarlag/psr-http-message-bundle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM