当我注入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。*
答案 0 :(得分:0)
您错过了一些东西。
Symfony使用ParamConverter功能将请求注入您的操作中。如果要覆盖它,则还必须创建一个自定义转换器,并在服务中使用正确的优先级以避免错误。