我在此类的构造方法中定义了请求。
/**
* @var Request
*/
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
现在,当我尝试在这样的某个函数中检索帖子数据时:
public function postListsAction()
{
dd($this->request->get("title"));
}
我收到以下错误:
无法自动连线服务"App\Controller\ListController":方法"__construct(("的参数"$request"引用类"Symfony\Component\HttpFoundation\Request",但不存在此类服务。
如何解决此问题?
正如错误消息所述,您尝试注入的请求类未声明为服务。请改用 RequestStack:
namespace AppNewsletter;
use SymfonyComponentHttpFoundationRequestStack;
class NewsletterManager
{
protected $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function anyMethod()
{
$request = $this->requestStack->getCurrentRequest();
// ... do something with the request
}
}
问候
我认为问题是您正在尝试将请求作为服务注入构造函数。你能试试以下方法吗
use SymfonyComponentHttpFoundationRequest;
public function postListsAction(Request $request)
{
dd($request->get("title"));
// .....
}
Symfony文档:https://symfony.com/doc/4.3/controller.html#the-request-object-as-a-controller-argument
可注入服务类称为RequestStack
您可以通过调用getCurrentRequest
来访问当前请求
例如
namespace AppManagers;
use SymfonyComponentHttpFoundationRequestStack;
class SomeManager
{
protected $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function serviceMethod()
{
$request = $this->requestStack->getCurrentRequest();
}
}
当您调用该控制器并且您不传递任何发布数据(我的意思是任何请求对象(时,构造函数会自动调用。因此,您需要在接收帖子数据的函数上传递$request对象。
public function postListsAction(Request $request)
{
dd($request->title);
}
- laravel:6.6.0
- 菲律宾语:7.2.10
我的演示:
路由器:
Route::get('/test','TestTestController@index');
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function index()
{
dd($this->request->get("name"));
}
它正在工作!