smart-core/settings-bundle

SmartCore Settings Bundle.

Installs: 537

Dependents: 2

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

dev-master 2019-06-16 12:40 UTC

This package is auto-updated.

Last update: 2020-07-16 14:57:42 UTC


README

Installation

  1. Необходимо прописать в Kernel.php следующий код:

    protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
    {
        parent::dumpContainer($cache, $container, $class, $baseClass);
    
        /** @var ContainerInterface $container2 */
        $container = require $cache->getPath();
        $container->set('kernel', $this);
        $container->get('settings')->warmupDatabase();
    }
  2. Затем в бандле по марштруту /Resources/config/settings.yml описать конфиг настроек в следующем формате:

    # Short format
    option1: value 1
    
    # Full specs
    option2:
        type: TextType # CheckboxType, ChoiceType, CheckboxType etc...
        hidden: true # Скрывать в админке
        value: |
            Многострочный
            Текст.
        title: Если указан заголовок, то будет отображаться вместо имени.
        description: Подробное описание настройки
        validation:
            - NotBlank: ~
            - Range:
                min: 120
                max: 180
        choices:
            ru: Россия
            de: Германия
    
    
        # @todo
        group: main 
        update_callback: \My\Setting\Callback::option2 # Вызов стататического метода либо сервиса при обновлении параметра.
  3. Чтобы файл settings.yml прочитался, необходимо создать DependencyInjection*Extension для того, чтобы бандл получил в системе Extension alias.

TODO

  • Конфигурирование приложения Symfony 4, например через /config/packages/smart_settings.yaml
  • Решить как поступать в случае если настройка была сохранена в БД, но потом удалена из конфига. Здесь можно либо удалять настройку из бд, либо помечать is_active = false.