Settings plugin for CakePHP
, (*1)
The Settings Plugin allows you to manage your settings (normally used with cake's Configure
-class) in your database., (*2)
Note: The Settings-plugin is prefix-minded. An example: Prefix.Name
., (*6)
Installation
You can install this plugin into your CakePHP application using composer. For existing applications you can add the following to your composer.json
file:, (*7)
"require": {
"cakemanager/cakephp-settings": "dev-master"
}
And run /composer update
., (*8)
Configuration
You will need to add the following line to your application's bootstrap.php file:, (*9)
Plugin::load('Settings', ['bootstrap' => true, 'routes' => true]);
// or run in your shell
$ bin/cake plugin load -b -r Settings
Next you need to create the table. Use the following command to initialize the settings-table., (*10)
$ bin/cake migrations migrate -p Settings
Usage
The Setting
-class works the same like the Configure
-class from CakePHP itself., (*11)
You can include the class with:, (*12)
use Settings\Core\Setting;
Write
You can write settings with the following:, (*13)
Setting::write('App.Name', 'Custom Name');
The value Custom Name
is now written to the database with the key App.Name
. The empty array can contain multiple options, (*14)
Read
Now we gonna read the value from our just created key. Use:, (*15)
Setting::read('App.Name');
This will return our value: Custom Name
., (*16)
Register
To prevent missing configurations when migrating to another environment the register
method is introduced.
Use the following to make sure the configuration exists in your application:, (*17)
Setting::register('App.Name', 'Default Value', []);
Options
The following options are available:
- description
- Description of your setting.
- type
- Type to use like text
, select
, and more.
- options
- Array with available options. In combination with the type = select
option, this will generate a
select-box with the given options.
- editable
- Bool if the setting should be editable.
- weight
- Weight (order) of the setting., (*18)
The options key can handle multiple types. You can define an array with options, but you can also create a close to
prevent long queries on every request. Example:, (*19)
Setting::register('App.Index', false, [
'options' => function() {
return TableRegistry::get('Blogs')->find('list')->toArray();
}
]);
If you are using the CakeAdmin Plugin, we will create a default form where you can edit your settings (if the field editable
isset to 1
). The Settings-Plugin will automatically add a menu-item to the admin-area., (*20)
If you click the menu-item you will see a list with all editable settings who contains the chosen prefix (or default: App
)., (*21)
Register
To add your prefix to the settings-list use the following:, (*22)
Configure::write('Settings.Prefixes.Test', 'Test');