I would like to set a variable in the session using laravel this way
Session::set('variableName')=$value;
but the problem is that I don't know where to put this code, 'cause I would like to set it for one time (when the guest visite the home page or any other page)? The main idea is to use a global variable to use it in all application controllers, I heared about something related to configuration variables but I'm not sure if it will be a good Idea to use config variables or only the session? Thanks
The correct syntax for this is: Session::set('variableName', $value); For Laravel 5.4 and later, the correct method to use is put : Session::put('variableName', $value);
The session configuration is stored in config/session. php . Be sure to review the well documented options available to you in this file. By default, Laravel is configured to use the file session driver, which will work well for the majority of applications.
Storing Session Data Data can be stored in session using the put() method. The put() method will take two arguments, the “key” and the “value”.
Laravel session is a way of storing the user information across the multiple user requests. It keeps track of all the users that visit the application.
The correct syntax for this is:
Session::set('variableName', $value);
For Laravel 5.4 and later, the correct method to use is put
:
Session::put('variableName', $value);
To get the variable, you would use:
Session::get('variableName');
If you need to set it once, I'd figure out when exactly you want it set and use Events
to do it.
For example, if you want to set it when someone logs in, you'd use:
Event::listen('auth.login', function() { Session::set('variableName', $value); });
I think your question ultimately can be boiled down to this:
Where can I set a long-lived value that is accessible globally in my application?
The obvious answer is that it depends. What it depends on are a couple of factors:
Config
If the value is the same for everyone and will seldom change, the best place to probably put it is in a configuration file somewhere underneath app/config
, e.g. app/config/companyname.php
:
<?php return [ 'somevalue' => 10, ];
You could access this value from anywhere in your application via Config::get('companyname.somevalue')
Session
If the value you are intending to store is going to be different for each user, the most logical place to put it is in Session
. This is what you allude to in your question, but you are using incorrect syntax. The correct syntax to store a variable in Session is:
Session::put('somekey', 'somevalue');
The correct syntax to retrieve it back out later is:
Session::get('somekey');
As far as when to perform these operations, that's a little up to you. I would probably choose a route filter if on Laravel 4.x or Middleware if using Laravel 5. Below is an example of using a route filter that leverages another class to actually come up with the value:
// File: ValueMaker.php (saved in some folder that can be autoloaded) class ValueMaker { public function makeValue() { return 42; } } // File: app/filters.php is probably the best place Route::filter('set_value', function() { $valueMaker = app()->make('ValueMaker'); Session::put('somevalue', $valueMaker->makeValue()); }); // File: app/routes.php Route::group(['before' => 'set_value'], function() { // Value has already been 'made' by this point. return View::make('view') ->with('value', Session::get('somevalue')) ; });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With