fm-labs / cakephp-settings
Settings plugin for CakePHP
Package info
github.com/fm-labs/cakephp-settings
Type:cakephp-plugin
pkg:composer/fm-labs/cakephp-settings
Requires
- php: >=8.2
- cakephp/cakephp: ^5.0
Requires (Dev)
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Store configuration settings in database.
Installation
You can install this plugin into your CakePHP application using composer.
The recommended way to install composer packages is:
$ composer require fm-labs/cakephp-settings:^5
# For CakePHP 4.x
$ composer require fm-labs/cakephp-settings:^4
Run migrations
$ ./bin/cake migrations migrate --plugin Settings
Usage
Manage settings via Console
// Initialize settings from schema $ ./bin/cake settings init // List available settings $ ./bin/cake settings list // List configured settings values $ ./bin/cake settings values // Get setting value $ ./bin/cake settings get-value // Update setting value $ ./bin/cake settings set-value
Manage settings programmatically
@TODO
Load settings
To load settings for your app:
// In your bootstrap.php or in Plugin::bootstrap() \Cake\Core\Configure::load('app', 'settings');
To load plugin settings:
// In your bootstrap.php or in Plugin::bootstrap() \Cake\Core\Configure::load('PluginName', 'settings');
Settings Schema file
App and plugin settings are defined in settings schema file, which should be in your app's or plugins's config directory.
APP/config/settings.php or PLUGINS/MyPlugin/config/settings.php respectively.
<?php // Example settings.php for User plugin return [ 'Settings' => [ 'User' => [ 'groups' => [ 'User.Auth' => ['label' => __('User Authentication')], 'User.Signup' => ['label' => __('User Signup')], ], 'schema' => [ 'User.Login.disabled' => [ 'group' => 'User.Auth', 'type' => 'boolean', 'default' => true, ], 'User.Signup.disabled' => [ 'group' => 'User.Signup', 'type' => 'boolean', 'default' => true, ], 'User.Signup.verifyEmail' => [ 'group' => 'User.Signup', 'type' => 'boolean', 'default' => false, ], ], ], ], ];
Events
The Settings.build event will be triggered, when the global settings schema gets initialized.
/** * */ public function implementedEvents() { return [ 'Settings.build' => 'buildSettings', ]; } /** * @param \Cake\Event\Event $event The event object * @param \Settings\Settings $settings The settings object * @return void */ public function buildSettings(Event $event, $settings) { // load a settings schema config file //$settings->load('User.settings'); // add a setting group $settings->addGroup('User.Password', [ 'label' => 'User Password Settings' ]); // add a setting $settings->add('User.Password.expireInDays', [ 'group' => 'User.Password', 'type' => 'int', 'label' => 'Password expiry (in days)', 'help' => 'The password will expire in X days and a new password needs to be entered by the user at the next login.' ]); }