hexanet / settings-bundle
settings system
Installs: 8 054
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.1
- doctrine/orm: ~2.2,>=2.2.3
- symfony/cache: ~3.4|~4.0
- symfony/config: ~3.4|~4.0
- symfony/dependency-injection: ~3.4|~4.0
- symfony/http-kernel: ~3.4|~4.0
Requires (Dev)
- leanphp/phpspec-code-coverage: ^3.1
- phpspec/phpspec: ^3.2
This package is not auto-updated.
Last update: 2022-02-01 13:12:36 UTC
README
Settings system.
Installation
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:
$ composer require hexanet/settings-bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require hexanet/settings-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the app/AppKernel.php
file of your project:
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Hexanet\SettingsBundle\HexanetSettingsBundle(), ); // ... } // ... }
Database
You have to create the table in the database, to do this we generate a migration:
bin/console doctrine:migrations:diff --filter-expression="/setting$/"
bin/console doctrine:migrations:migrate
Usage
Define the settings
A schema allows you to initialize the settings by giving them a default value.
First you need to create a class that extends from the SchemaInterface
interface:
<?php namespace App\Settings\AppSchema; use Hexanet\SettingsBundle\Schema\SettingsBuilder; use Hexanet\SettingsBundle\Schema\SchemaInterface; class AppSchema implements SchemaInterface { public function build(SettingsBuilder $settingsBuilder): void { $settingsBuilder->addSetting('itemsPerPage', 25); } }
Then declare it as service with the hexanet.settings_schema
tag :
App\Settings\AppSchema: tags: [hexanet.settings_schema]
The bundle provide autoconfiguration for class that implement
SchemaInterface
.
After that we can use the php bin/console hexanet:settings:setup
command to generate all the settings, if a setting already exists the command ignores it.
Examples
public function indexAction(SettinsManagerInterface $settingsManager) { // set and get $settingsManager->set('tva', 19.6); $settingsManager->get('tva'); // check if settign exists $settingsManager->has('tva'); // get all settings $settingsManager->all(); // retrieve a non-existent setting $settingsManager->get('not here'); // SettingNotFoundException is throw }
Production
For production it's possible to activate the cache by modifying the config of the bundle:
// config/packages/prod/hexanet_settings.yaml hexanet_settings: cache: true
The Symfony cache app
is used (@cache.app)
Credits
Developed by Hexanet.
License
SettingsBundle is licensed under the MIT license.