Welcome Guest, Not a member yet? Register   Sign In
Where to place general global variables?
#1

[eluser]chefnelone[/eluser]
Hello,

I use to create some variables which are available in the entire app.
As a example:
$clientsEmail = '[email protected]';
$contactFormEmail = '[email protected]';

I simply create these vars in php file: myVars.php , and then I include this file in the header of every page.


But I'm sure that CI offers a cleaner way to do this to avoid including files.
I mean, creating those vars in config.php or autoload.php, etc.

How do you do this?
#2

[eluser]Ki[/eluser]
I have had the same problem - I had variables + DB requests that needed to be defined on every page. To accomplish this I have created My_controller (as suggested by multiple CI posts). All other controllers extend My_controller instead of Controller. This way, My_controller holds everything that needs to be done for every page on the site. If you have a section that does not need that stuff, simply extend Controller.
As for variables that are used everywhere, I simply defined them in My_Controller as constants. If you want to define variables that are defined regardless of My_controller or controller being loaded, you may look into hooks, or define them in your config.php - but that is a it controversial
#3

[eluser]ciGR[/eluser]
Have you see that http://ellislab.com/codeigniter/user-gui...onfig.html
#4

[eluser]Ki[/eluser]
Another good point!
#5

[eluser]JoostV[/eluser]
1. Store them in a custom config file as $config['clientsEmail']; and so on.
2. Store the custom config file in the config folder under a custom name
3. Load the custom config file and call the settings
Code:
$this->config->load('myconfigfilename');
$this->config->item('clientsEmail');

Its all in the user guide Wink
#6

[eluser]chefnelone[/eluser]
Since I'll need the variables everywhere at everytime, I think that a custom config file can do it. The user guide is quite clear about how to do it, but.. can a config file load data from a database?... If not, I might look for a 'hook' to do this.
#7

[eluser]Zeeshan Rasool[/eluser]
Not sure about dynamic data from db to config but may be possible if we create a CI instance as we create in libraries or in hooks. You can also create a custom config type file in which you declare all your variables and just called them any where with: $this->config->load('email');
#8

[eluser]Ki[/eluser]
I don't mean to be repeating what I mentioned earlier, but if you load info from database, why don't you use My_controller to load everything you need for every page? It seems to be the common solution judging by the posts...
#9

[eluser]chefnelone[/eluser]
[quote author="samota" date="1266715168"]I don't mean to be repeating what I mentioned earlier, but if you load info from database, why don't you use My_controller to load everything you need for every page? It seems to be the common solution judging by the posts...[/quote]
I think that since a controller can't be autoloaded it isn't a good option for what I need.
I need the variables available everytime/everypage.
#10

[eluser]Ki[/eluser]
[quote author="chefnelone" date="1266802139"][quote author="samota" date="1266715168"]I don't mean to be repeating what I mentioned earlier, but if you load info from database, why don't you use My_controller to load everything you need for every page? It seems to be the common solution judging by the posts...[/quote]
I think that since a controller can't be autoloaded it isn't a good option for what I need.
I need the variables available everytime/everypage.[/quote]

If you create My_controller, will just extend it every page instead of the Controller. This way you do not have to load library/model in every controller. Best of luck!




Theme © iAndrew 2016 - Forum software by © MyBB