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.

+3


source to share


1 answer


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');

      

-1


source







All Articles