Accessing the current request in controller
Asked Answered
F

1

9

In other MVC frameworks, accessing to the current request object is as simple as $this->request. However in the Laravel, I generally see that Request $request is generally injected to each action (public function edit($id, Request $request)). It seems like a boilerplate. Is there any better way to access the request? (I now that I can use inheritance to use $this->request, I am looking for the Laravel way to do that.)

update:

I found out using app('request') I can access to the current request. However, I am not sure of its potential pros and cons.

Farmer answered 9/8, 2015 at 1:57 Comment(2)
public function edit($id, Request $request) isn't really "boilerplate", it's dependency injection -- that's Laravel's way of doing things most places. You can also use Facades if you prefer: Request::current(), or save the request to $this->request in your constructor.Agbogla
@Ben Request::current() is undefined. ` Request $request` is not in the methods created by artisan. request object is almost always need in controller's method and sending it repetitively as a parameter is definitely a boilerplate.Farmer
S
9

In Laravel 5, you can use the request() helper:

// to get the current request object
$request = request();

// or to just get a value from the request
$value = request("field", "default");

See https://laravel.com/docs/5.6/helpers#method-request

Sunbonnet answered 6/7, 2018 at 20:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.