Search code examples
phplaravelcontrollerlaravel-4before-filter

How to run code before all my methods inside controller in Laravel 4?


I have Content controller with REST methods (index..create..store..) and i want to run some code before any of those methods run.

what i am trying to do is to set var for my layout with some data that is relevant to all my methods within Content controller:

$this->layout->myvar = 'some-data';

I tried to do something like that:

class ContentController extends BaseController {
    function __construct() {
        $this->layout->myvar= 'some-data';
    }
..

but it doesn't seems to work. i get "Attempt to assign property of non-object" error.


Solution

  • Laravel 5.1+

    This has been deprecated in favour of Middleware.

    Laravel 4

    You could set the beforeFilter like this:

    class ContentController extends BaseController {
        function __construct() {
            // this function will run before every action in the controller
            $this->beforeFilter(function()
            {
                // this will make the variable $myvar available in your view
                $this->layout->with('myvar', 'some-data');
            });
        }
    }