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
in Laravel 5.4
use this method:
I think your question ultimately can be boiled down to this:
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
: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:The correct syntax to retrieve it back out later is:
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:
In Laravel 5.6, you will need to set it as
To retrieve it is as simple as
You can try
To add to the above answers, ensure you define your function like this:
Note the "(Request $request)", now set a session like this:
And retrieve the session in this way:
To erase the session try this:
or
The correct syntax for this is...
To get the variable, you'd use...
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...