Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel private variable shared between two methods in Controller

How to use private variable in Laravel Controller, and share that variable value between two methods. (Set it in one use it in another).

like image 492
Sysrq147 Avatar asked Dec 19 '13 21:12

Sysrq147


2 Answers

You're talking about one single controller, right? So I'll assume that this what you mean:

class ControllerController extends Controller {

    private $variable;

    public function __construct($whatever)
    {
        $this->variable = $whatever;
    }

    public function method1($newValue)
    {
        $this->variable = $newValue;
    }

    public function method2()
    {
        return $this->variable;
    }

}

If you are doing thing in the same request, you can

$this->method1('newvalue');

echo $this->method2();

And it will print newvalue.

If you are doing it between requests, you need to remember that your application ends after a request a restart in a new one, so you'll need to store it somewhere, like in a Session variable:

Session::put('variable', $newvalue);

and then

Session::get('variable');

Or you can redirect with the value you need to get back in your method:

Redirect::to('posts')->with('variable','this is a new value');

And in the second

Session::get('variable');
like image 101
Antonio Carlos Ribeiro Avatar answered Nov 14 '22 03:11

Antonio Carlos Ribeiro


You can also use Setting approach outlined here

laravel share variable across all methods in a controller

and

Laravel: Passing default variables to view

and you can download Setting here, https://github.com/Phil-F/Setting

like image 1
windmaomao Avatar answered Nov 14 '22 03:11

windmaomao