![](/img/trans.png)
[英]How to fix symfony error: Cannot autowire argument $request of "App\Controller\ArticleController::create()"?
[英]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
或切換到替代方案。
以下捆綁包提供了已刪除的功能,並且基於原始實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.