smart-core/settings-bundle

SmartCore Settings Bundle.

Maintainers

👁 artemdigi

Package info

github.com/Smart-Core/SettingsBundle

Type:symfony-bundle

pkg:composer/smart-core/settings-bundle

Statistics

Installs: 537

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

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

Requires

Requires (Dev)

None

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 4878cdad63c4182dea7e0831098452606c36ec10

bundleSettings

This package is auto-updated.

Last update: 2026-06-17 04:13:26 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.