Accessing the current request in the controller
In other MVC frameworks, accessing the current request object is as easy as $this->request
. However, in Laravel I usually see what is Request $request
usually injected to each action ( public function edit($id, Request $request)
). It looks like a template. Is there a better way to access the request? (I can now use inheritance to use $this->request
, I'm looking for a Laravel way to do this.)
update:
I found out using app('request')
I can access the current request. However, I'm not sure about my potential pros and cons.
source to share
You can simply create a class that you will propagate in each controller AppController
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\Request;
abstract class AppController extends Controller {
/**
* @var Request
*/
protected $request;
public function __construct(Request $request)//Dependency injection
{
$this->request = $request;
}
}
Primary use
HomeController File
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\AppController;
class HomeController extends AppController
{
public function index()
{
return $this->request->path();
}
}
Route file
<?php
Route::resource('/news', 'HomeController');
source to share