Just a Settings Library.
Install via composer.
$ composer require phpmob/settings-bundle
Using with cache
$ composer require cache/filesystem-adapter
Now you can use built-in \PhpMob\Settings\Manager\CachedManager
.
Alternative using built-int symfony framework cache see - framework/cache
# use with doctrine orm
doctrine:
orm:
mappings:
PhpMobSettings:
type: xml
is_bundle: false
prefix: PhpMob\Settings\Model
dir: '%kernel.project_dir%/vendor/phpmob/settings-bundle/src/Resources/config/doctrine/model'
phpmob_settings:
cache:
service: cache.flysystem
schemas:
section1:
label: Section1
settings:
key1: ~
section2:
label: Section2
settings:
key1:
value: key1Value
key2:
label: SectionKey2
value: key2value
blueprint:
options:
label: SectionKey2Label
constraints:
NotBlank: ~
gender:
label: Gender
value: f
blueprint:
type: Symfony\Component\Form\Extension\Core\Type\ChoiceType
options:
required: true
choices:
Man: m
Feman: f
birthday:
type: date
label: Birthday
value: "1988-02-10"
blueprint:
type: Symfony\Component\Form\Extension\Core\Type\BirthdayType
datetime:
type: datetime
label: DateTime
value: ~
blueprint:
type: Symfony\Component\Form\Extension\Core\Type\DateTimeType
Configuration for owner (user) aware settings. Controller used PhpMobSettingsBundle:Update:userUpdate
.
phpmob_settings:
schemas:
section1:
owner_aware: true
label: Section1
settings:
key1: ~
See example routing in src/Resources/config/routing.xml
or you can customize with:
your_route_name:
path: /settings/{section}
defaults:
_controller: PhpMobSettingsBundle:Update:globalUpdate
_template: @yourtemplate # default @PhpMobSetting/default.html.twig
_flash: ~ # flash message after update
_redirect: ~ # redirect after update
<?php
namespace YourBundle\Form\Type;
use PhpMob\SettingsBundle\Form\Type\AbstractBlueprintType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
class YourSettingType extends AbstractBlueprintType
{
/**
* {@inheritdoc}
*/
public function getParentType(): string
{
return CheckboxType::class;
}
}
And in setting configuration.
phpmob_settings:
schemas:
section1:
owner_aware: true
label: Section1
settings:
key1:
type: boolean
label: 'Key 1'
value: true
blueprint:
type: YourBundle\Form\Type\YourSettingType
Getter setting
{{ settings_get('section.key') }}
{# owner aware setting #}
{{ settings_get('section.key', app.user) }}
Setter setting
{{ settings_set('section.key', 'value') }}
{# owner aware setting #}
{{ settings_set('section.key', 'value', app.user) }}
Would like to help us and build the developer-friendly php code? Just follow our Coding Standards and test your code — see tests, spec.
Let Fork and PR now!
When contributing code to PhpMob, you must follow its coding standards.
PhpMob follows the standards defined in the PSR-0, PSR-1 and PSR-2 documents.
$ ./bin/ecs check src --fix
$ ./bin/phpunit