具有依赖项注入的控制器不起作用

时间:2019-02-28 23:39:59

标签: php symfony

当我注入Simfony的Request类时,它对我来说很好用,但是我刚刚创建了一个名为FormRequest的类,该类从Request中“扩展”,我认为这是可行的,因为它仍然是Request实例,但不是,我得到一个错误。

Type error: Argument 1 passed to AppBundle\Http\Controllers\BlogController::validateAction() must be an instance of AppBundle\Http\FormRequest, instance of Symfony\Component\HttpFoundation\Request given, called in /var/www/html/api-erp/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php on line 151
Exception

我的类FormRequest.php:

namespace AppBundle\Http;

use Symfony\Component\HttpFoundation\{JsonResponse, Request, Response};

class FormRequest extends Request 
{

}

Controller BlogController.php是:

<?php

namespace AppBundle\Http\Controllers;

use AppBundle\Http\FormRequest;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\{Request, JsonResponse};
use Symfony\Component\Routing\Annotation\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog", name="blog_index")
    */
    public function validateAction(FormRequest $request)
    {
        return new JsonResponse(['success' => true]);
    }
}
  

Simfony版本:3.4。*

1 个答案:

答案 0 :(得分:0)

您错过了一些东西。

Symfony使用ParamConverter功能将请求注入您的操作中。如果要覆盖它,则还必须创建一个自定义转换器,并在服务中使用正确的优先级以避免错误。

更多说明in symfony documentation