Дата обновления перевода 2021-01-29

Справочник конфигурации фреймворка (FrameworkBundle)

FrameworkBundle определяет конфигурацию главного фреймворка, от сессий и переводов, до форм, валидации, маршрутизации и прочего. Все эти опции конфигурируются под ключом framework в вашей конфигурации приложения.

1
2
3
4
5
# отображает значения конфигурации по умолчанию, определённые Symfony
$ php app/console config:dump framework

# отображает актуальные значения конфигурации, используемые вашим приложением
$ php app/console debug:config framework

Note

При использовании XML, вы должны увидеть пространство имён http://symfony.com/schema/dic/symfony и связанная XSD cхема доступна тут: http://symfony.com/schema/dic/symfony/symfony-1.0.xsd

Конфигурация

secret

тип: string обязательно

Это строка, которая должна быть уникальна в вашем приложении, и часто используется, что добавить больше энтропии в операции, связанные с безопасностью. Её значение жолжно быть набором знаков, цифр и символов, выбранных хаотично, а рекомендуемая длина составляет примерно 32 знака.

На практике, Symfony использует это значение для шифроваия cookies, используемых в функциональности “запомнить меня” и для создания подписанных URI при использовании ESI (Включений боковой стороны). Поэтому вам нужно относиться к этому значению, словно оно является чувствительной информацией безопасности, и никогда не делать его публичным

Эта опция становится параметром сервис-контейнера под названием kernel.secret, который вы можете использовать тогда, когда приложению нужна случайная постоянная строка для добавления большей энтропии.

Как и с любым другим параметром, относящимся к безопасности, хорошей практикой считается изменение этого значения время от времени. Однако, помните, что изменение этого значение инвалидирует все подписанные URI и cookies “Запомнить меня”. Поэтому, после изменения этого значения, вам нужно повторно сгенерировать кеш приложения и вывести из системы всех пользователей приложения.

http_method_override

тип: boolean по умолчанию: true

Определяет, использунтся ли параметр запроса _method так, как требуется HTTP-методом в запросах POST. Если опция включена, то метод Request::enableHttpMethodParameterOverride вызывается автоматически. Он становится параметром сервис-контейнера под именем kernel.http_method_override.

Caution

Если вы используете Обратный прокси HttpCache с этой опцией, то ядро будет игнорировать параметр _method, что может привести к ошибкам.

Чтобы исправить это, вызовите метод enableHttpMethodParameterOverride() до создания объекта Request:

// public/index.php

// ...
$kernel = new CacheKernel($kernel);

Request::enableHttpMethodParameterOverride(); // <-- add this line
$request = Request::createFromGlobals();
// ...

trusted_headers

New in version 5.2: Опция trusted_headers была представлена в Symfony 5.2.

Опция trusted_headers необходима для конфигурации того, какой клиентской информации стоит доверять (например, их хостингу) при запуске Symfony с балансировщиком нагрузки или обратным прокси. См, How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy.

trusted_proxies

New in version 5.2: Опция trusted_proxies была повторно представлена в Symfony 5.2 (она была удалена в Symfony 3.3).

Опция trusted_proxies необходима, чтобы получать точную информацию о клиенте (например, его IP адрес) при запуске Symfony с балансировщиком нагрузки или обратным прокси. См, How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy.

ide

тип: string по умолчанию: null

Symfony превращает пути в сбросах переменных и сообщениях исключений в ссылки, которые открывают этифайлы прямо в вашем браузере. Если вы хотите открыть эти файлы в вашем любимом интерфейсе IDE или текстовом редакторе, установите эту опцию в любое из следующих значений: phpstorm, sublime, textmate, macvim, emacs и atom.

Note

Опция phpstorm поддерживается PhpStorm в MacOS, Windows требует PhpStormProtocol, а Linux требует phpstorm-url-handler.

Если вы используете другой редактор, то ожидаемое значение конфигурации - это шаблон URL, содержащий заполнител %f так, где ожидается путь файла, и заполнитель %l для номера строки (символы процента (%) должны быть экранированы путём их удвоения, чтобы предупроедить Symfony от использования их в качестве параметров контейнера).

  • YAML
    1
    2
    3
    # config/packages/framework.yaml
    framework:
        ide: 'myide://open?url=file://%%f&line=%%l'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config ide="myide://open?url=file://%%f&line=%%l"/>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->ide('myide://open?url=file://%%f&line=%%l');
    };
    

Так как каждый разработчик использует разные IDE, то рекомендованый способ включения этой функции - сконфигурировать её на системном уровне. Для начана, вы можете установить ее значение как некоторую переменную окружения, которая хранит имя IDE/редактора:

  • YAML
    1
    2
    3
    4
    # config/packages/framework.yaml
    framework:
        # переменная окружения хранит имя IDE/редактора (например, 'phpstorm', 'vscode', etc.)
        ide: '%env(resolve:CODE_EDITOR)%'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <!-- переменная окружения хранит имя IDE/редактора (например, 'phpstorm', 'vscode', etc.) -->
        <framework:config ide="%env(resolve:CODE_EDITOR)%"/>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // переменная окрущения хранит имя IDE/редактора (например, 'phpstorm', 'vscode', etc.)
        $framework->ide('%env(resolve:CODE_EDITOR)%');
    };
    

New in version 5.3: Возможность использовать переменные окружения в опции framework.ide была представлена в Symfony 5.3.

Другой вариант - установить опцию xdebug.file_link_format в вашем файле конфигурации php.ini. Нужно использовать такой же формат, как и для опции framework.ide, но без необходимости экранировать знаки процента (%), путем их дублирования:

1
2
3
4
5
// пример для PhpStorm
xdebug.file_link_format="phpstorm://open?file=%f&line=%l"

// пример для Sublime
xdebug.file_link_format="subl://open?url=file://%f&line=%l"

Note

Если определены и framework.ide, и xdebug.file_link_format, Symfony использует значение опции xdebug.file_link_format.

Tip

Установка опции ini xdebug.file_link_format работает даже если расширение Xdebug не подключено.

Tip

При запуске вашего приложения в контейнере или на виртуальной машине, вы можете сказать Symfony, чтобы она отображала файлы от гостя к хостингу, путем изменения их префиксов. Это должно быть указано в конце шаблона URL, использованием & и >, в качестве разделителей от-гостя-к-хостингуs:

1
2
3
4
5
6
7
// /path/to/guest/.../file will be opened
// as /path/to/host/.../file on the host
// and /var/www/app/ as /projects/my_project/ also
'myide://%%f:%%l&/path/to/guest/>/path/to/host/&/var/www/app/>/projects/my_project/&...'

// example for PhpStorm
'phpstorm://open?file=%%f&line=%%l&/var/www/app/>/projects/my_project/'

test

тип: boolean

Если представлена эта настройка конфигурации (а не false), то загружаются сервисы, относящиеся к тестированию вашего приложеия (например, test.client). Эта настройка должна присутствовать в вашем окружении test (обычно через config/packages/test/framework.yaml).

See also

Чтобы узнать больше, см. Testing.

default_locale

тип: string по умолчанию: en

Локаль по умолчаию используется, если не был установлен параметр маршрутизации _locale. Он доступен с методом Request::getDefaultLocale.

See also

Вы можете узнать больше информации о локали по умолчанию в Setting a Default Locale.

enabled_locales

тип: array по умолчанию: [] (пустой массив = включить все локали)

New in version 5.1: Опция enabled_locales была представлена в Symfony 5.1.

Приложения Symfony по умолчанию генерируют файлы переводов для сообщений валидации и безопасности для всех локалей. Если ваше приложение использует только некоторые локали, используйте эту опцию, чтобы ограничить сгенерированные Symfony файлы и немного улучшить производительность:

  • YAML
    1
    2
    3
    # config/packages/translation.yaml
    framework:
        enabled_locales: ['en', 'es']
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    <!-- config/packages/translation.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <enabled-locale>en</enabled-locale>
            <enabled-locale>es</enabled-locale>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // config/packages/translation.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->enabledLocales(['en', 'es']);
    };
    

Если некоторый пользователь делает запросы с локалью, не включенной в эту опцию, приложение не отобразит ошибки, так как Symfony отобразит содержание, используя резеврную локаль.

set_content_language_from_locale

тип: boolean по умолчанию: false

New in version 5.4: Опция set_content_language_from_locale была представлена в Symfony 5.4.

Если эта опция установлена как true, ответ будет иметь HTTP-заголовок Content-Language, установленный с локалью Request.

set_locale_from_accept_language

тип: boolean по умолчанию: false

New in version 5.4: Опция set_locale_from_accept_language была представлена в Symfony 5.4.

Если эта опция установлена как true, локаль Request будет автоматически установлена в значение HTTP-заголовка Accept-Language.

Когда передается атрибут запроса _locale, заголовок Accept-Language игнорируется.

disallow_search_engine_index

тип: boolean по умолчанию: true, если включен режим отладки, false - если нет.

Если true, Symfony добавляет HTTP-тег X-Robots-Tag: noindex ко всем ответам (кроме случаев, когда ваше собственное приложение добавляет этот заголовок, и тогда он не будет изменен). Этот HTTP-заголовок X-Robots-Tag сообщает поисковым системам не индексировать ваш веб-сайт. Эта опция - мера безопасности, на случай, если вы опубликуете свой сайт в режиме отладки.

trusted_hosts

тип: array | string по умолчанию: array()

Было обнаружено, что много разных атак полагаются на противоречия обработки заголовка Host различным ПО (веб-серверами, обратными прокси, веб-фреймворками и т.д.). Фактически, каждый раз, когда фреймворк генерирует абсолютный URL (при отправке электронного письма для сброса пароля, например), хост может быть изменён хакером.

See also

Вы можете прочитать “Атаки на HTTP-заголовки хоста”, чтобы узнать больше о таком виде атак.

Метод Symfony Request::getHost() может быть уязвим к некоторым из таких атак, так как он зависит от конфигурации вашего веб-сервера. Простым решением для избежания этих атак является белый список хостов, на которые будето отвечать ваше приложение Symfony. В этом заключается цель опции trusted_hosts. Если имя хоста входящего запроса не совпадает с одним из хостов в списке, то приложение не будет отвечать, а пользователь получить ответ 400.

  • YAML
    1
    2
    3
    # config/packages/framework.yaml
    framework:
        trusted_hosts:  ['^example\.com$', '^example\.org$']
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:trusted-host>^example\.com$</framework:trusted-host>
            <framework:trusted-host>^example\.org$</framework:trusted-host>
            <!-- ... -->
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->trustedHosts(['^example\.com$', '^example\.org$']);
    };
    

Хосты также могут быть сконфигурированы с использованием регулярных выражений (например, ^(.+\.)?example.com$), что облегчает ответ на любой под-домен.

Кроме того, вы также можете установить доверенные хосты во фронт-контроллере, используя метод Request::setTrustedHosts():

// public/index.php
Request::setTrustedHosts(['^(.+\.)?example\.com$', '^(.+\.)?example\.org$']);

Значение по умолчанию для этой опции - это пустой массив, что означает, что приложение может отвечать на любой заданный хост.

See also

Прочтите больше об этом в записи блога Советов безопасности.

form

enabled

тип: boolean по умолчанию: `true или false, в зависимости от вашей установки

Включать сервисы формы в сервис-контейнере или нет. Если вы не используете формы, установка этой опции, как false может улучшить производительность вашего приложения, так как в контейнер будет загружаться меньше сервисов.

Эта опция будет автоматически установлена, как true, когда будет сконфигурирована одна из дочерних настроек.

Note

Это автоматически включит `валидацию`_.

See also

Чтобы узнать больше, см. Forms.

csrf_protection

See also

Чтобы узнать больше информации о CSRF-защите, см. How to Implement CSRF Protection.

enabled

тип: boolean по умолчанию: true или false, в зависимости от вашей установки

Эта опция может быть использована, чтобы отключить CSRF-защиту во всех формах. Но вы также можете отключить CSRF-защиту в индивидуальных формах <form-csrf-customization>`.

Если вы используете формы, но хотите избежать запуска вашей сессии (например, используя формы на сайте только с API), то csrf_protection должна быть установлена, как false.

error_controller

тип: string по умолчанию: error_controller

Этот контроллер вызывается, когда где-либо в вашем приложении появляется исключение. Контроллер по умолчанию (ErrorController), отображает конкретные шаблоны при разных условиях ошибок (см. How to Customize Error Pages).

esi

See also

Вы можете прочитать больше о Включениях боковой стороны (ESI) в Working with Edge Side Includes.

enabled

тип: boolean по умолчанию: false

Включать ли поддержку ESI в фреймворке.

Вы также можете установить esi, как true, чтобы включить её:

  • YAML
    1
    2
    3
    # config/packages/framework.yaml
    framework:
        esi: true
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:esi/>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->esi()->enabled(true);
    };
    

fragments

See also

Узнайте больше о фрагментах в статье об HTTP-кеше.

enabled

тип: boolean по умолчанию: false

Включать ли слушатель фрагментов, или нет. Слушатель фрагментов используется, чтобы отображать ESI-фрагменты независимо от остальной страницы.

Эта установка автоматически имеет значение true, когда конфигурируется одна из дочерних установок.

hinclude_default_template

тип: string по умолчанию: null

Устанавливает содержание, отображаемое во время загрузки фрагмента, или когда отключен JavaScript. Может бвть либо именем шаблона, либо самим содержанием.

See also

См, How to Embed Asynchronous Content with hinclude.js, чтобы узнать больше о hinclude.

path

тип: string по умолчанию: '/_fragment'

Префикс пути для фрагментов. Слушатель фрагментов будет выполнен только когда запрос начинается с этого пути.

http_client

Когда установлен компонент HttpClient, HTTP-клиент доступен как сервис, под названием http_client, или с использованием псевдонима автомонтирования HttpClientInterface.

Этот сервис может быть сконфигурирован с использованием framework.http_client.default_options:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    # config/packages/framework.yaml
    framework:
        # ...
        http_client:
            max_host_connections: 10
            default_options:
                headers: { 'X-Powered-By': 'ACME App' }
                max_redirects: 7
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:http-client max-host-connections="10">
                <framework:default-options max-redirects="7">
                    <framework:header name="X-Powered-By">ACME App</framework:header>
                </framework:default-options>
            </framework:http-client>
        </framework:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    // config/packages/framework.php
    $container->loadFromExtension('framework', [
        'http_client' => [
            'max_host_connections' => 10,
            'default_options' => [
                'headers' => [
                    'X-Powered-By' => 'ACME App',
                ],
                'max_redirects' => 7,
            ],
        ],
    ]);
    
  • Standalone Use
    1
    2
    3
    4
    5
    6
    $client = HttpClient::create([
        'headers' => [
            'X-Powered-By' => 'ACME App',
        ],
        'max_redirects' => 7,
    ], 10);
    

Может быть определено множество предварительно сконфигурированных сервисов HTTP-клиента, каждый со своим именем сервиса, определенным в виде ключа под scoped_clients. Видимые клиенты наследуют опции по умолчанию, определенные для сервиса http_client. Вы можете переопределить эти опции, и определить несколько другиъ:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    # config/packages/framework.yaml
    framework:
        # ...
        http_client:
            scoped_clients:
                my_api.client:
                    auth_bearer: secret_bearer_token
                    # ...
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:http-client>
                <framework:scoped-client name="my_api.client" auth-bearer="secret_bearer_token"/>
            </framework:http-client>
        </framework:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    // config/packages/framework.php
    $container->loadFromExtension('framework', [
        'http_client' => [
            'scoped_clients' => [
                'my_api.client' => [
                    'auth_bearer' => 'secret_bearer_token',
                    // ...
                ],
            ],
        ],
    ]);
    
  • Standalone Use
    1
    2
    3
    4
    $client = HttpClient::createForBaseUri('https://...', [
        'auth_bearer' => 'secret_bearer_token',
        // ...
    ]);
    

Опции, определенные для видимых клиентов, применяются только к URL, сооветствующим либо их base_uri, либо опции scope, если она определена. Несовпадающие URL всегда используют опции по умолчанию.

Каждый видимый клиент также определяет соответствующий именованный псевдоним автомонтирования. Если вы, к примеру, используете Symfony\Contracts\HttpClient\HttpClientInterface $myApiClient в качестве типа и имени аргумента, автомонтирование внедрит сервис my_api.client в ваши автоматически смонтированные классы.

Подключив необязательную конфигурацию retry_failed, сервис HTTP-клиента автоматически будет повторно пробовать неуспешные HTTP-запросы.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# config/packages/framework.yaml
framework:
    # ...
    http_client:
        # ...
        default_options:
            retry_failed:
                # retry_strategy: app.custom_strategy
                http_codes:
                    0: ['GET', 'HEAD']   # повторно попробовать ошибки сети, если метод запроса GET или HEAD
                    429: true            # повторно попробовать все ответы со статус-кодом 429
                    500: ['GET', 'HEAD']
                max_retries: 2
                delay: 1000
                multiplier: 3
                max_delay: 5000
                jitter: 0.3

        scoped_clients:
            my_api.client:
                # ...
                retry_failed:
                    max_retries: 4

New in version 5.2: Опция retry_failed была представлена в Symfony 5.2.

auth_basic

тип: string

Имя пользователя и пароль, используемые для создания HTTP-заголовка Authorization, используемого в аутентификации базового HTTP. Значение этой опции должно следовать формату username:password.

auth_bearer

тип: string

Токен, используемый для создания HTTP-заголовка Authorization, используемого в аутентификации HTTP Bearer (также называется аутентификацией токенов).

auth_ntlm

тип: string

Имя пользователя и пароль, используемые для создания HTTP-заголовка Authorization, используемого в протоколе аутентификации Microsoft NTLM. Значение этой опции должно следовать формату username:password. Этот механизм аутентификации требует использования транспорта, основанного на cURL.

base_uri

тип: string

URI, который слияется в относительные URI, следуя правилам, разъясненным в стандарте RFC 3986. Это полезно, когда все сделанные вами запросы имеют общий префикс (например, https://api.github.com/), и вы можете избежать его добавления к каждому запросу.

Вот некоторые распространенные примеры того, как на практике работает слияение base_uri:

base_uri Относительный URI Реально запрошенный URI
http://example.org /bar http://example.org/bar
http://example.org/foo /bar http://example.org/bar
http://example.org/foo bar http://example.org/bar
http://example.org/foo/ bar http://example.org/foo/bar
http://example.org http://symfony.com http://symfony.com
http://example.org/?bar bar http://example.org/bar

bindto

тип: string

Имя интерфейса сети, IP-адрес, имя хостинга или UNIX-сокет для использования в качестве исходящего интерфейса сети.

buffer

тип: boolean | Closure

Буферизация ответа означает, что вы можете получать доступ к его содержимому множетство раз, не выполняя запрос снова. Буферизация подключается по умолчанию, когда тип содержания ответа - text/*, application/json или application/xml.

Если эта опция является булевым значение, ответ буферизируется, когда значение - true. Если эта опция является замыканием, ответ буферизируется, когда возвращенное значение - true (замыкание получает в качестве аргумента массив с заголовками ответов).

cafile

тип: string

Путь файла центра сертификации, который содержит один или более сертификатов, используемых для верификации сертификатов других серверов.

capath

тип: string

Путь к каталогу, содержажему один или более файлов центра сертификации.

ciphers

тип: string

Список имен шифров, разрешенных для соединений SSL/TLS. Они могут быть разделены двоеточиями, запятыми или пробелами (например, 'RC4-SHA:TLS13-AES-128-GCM-SHA256').

delay

тип: integer по умолчанию: 1000

New in version 5.2: Опция delay была представлена в Symfony 5.2.

Изначальная задержа в миллисекундах, используемая для вычисления времени ожидания между повторными попытками.

enabled

тип: boolean по умолчанию: false

Подключать ли поддержку повторных попыток неуспешного HTTP-запроса. Эта установека автоматически имеет значение “true”, если сконфигурирована одна из дочерних настроек.

headers

тип: array

Ассоциированный массив HTTP-заголовков, добавленный перед тем, как сделать запрос. Это значение должно использовать формат ['header-name' => 'value0, value1, ...'].

http_codes

тип: array по умолчанию: DEFAULT_RETRY_STATUS_CODES()

New in version 5.2: Опция http_codes была представлена в Symfony 5.2.

Список HTTP статус-кодов, вызывающих повторную попытку запроса.

http_version

тип: string | null по умолчанию: null

HTTP-версия для использования, обычно '1.1' или '2.0'. Отсавьте, как null, чтобы позволить Symfony выбрать лучшую версию автоматически.

jitter

тип: float по умолчанию: 0.1 (должно быть между 0.0 и 1.0)

New in version 5.2: Опция jitter была представлена в Symfony 5.2.

Эта опция добавляет некоторую рандомность к задержке. Полезно для избегания отправки множества запросов к серверу в одно и то же время. Рандомность вычисляется как задержка * джиттер. Например: если задержка - 1000ms, а джиттер - 0.2, реальзная задержка будет числом между 800 и 1200 (1000 +/- 20%).

local_cert

тип: string

Путь файла, который содержит сертификат в PEM формате, используемый HTTP- клиентом, Часто комбинируется с опциями local_pk и passphrase.

local_pk

тип: string

Путь файла, который содержит приватный ключ в PEM формате сертификата, определенного в опции local_cert.

max_delay

тип: integer по умолчанию: 0

New in version 5.2: Опция max_delay была представлена в Symfony 5.2.

Максимальное количество в миллисекундах для ожидания между повторными попытками. Используйте 0, чтобы не ограничивать длительность.

max_duration

тип: float по умолчанию: 0

Максимальное время выполнения, в секундах, которое могут использовать запрос и ответ. Значение, ниже чем или равное 0, означает, что время не ограничено.

max_host_connections

тип: integer по умолчанию: 6

Определяет максимальное количество одновременно открытых соединений с одним хостингом (рассматривая “хостинг” как эквивалент пары “имя хостинга + номер порта”). Это ограничение также применяется для соединений прокси, где прокси рассматривается как хостинг, для которого применяется данное ограничение.

max_redirects

тип: integer по умолчанию: 20

Максимальное количество следуемых перенаправлений. Используйте 0, чтобы не следовать ни одному перенаправлению.

max_retries

тип: integer по умолчанию: 3

New in version 5.2: Опция max_retries была представлена в Symfony 5.2.

Максимальное количество повторных попыток для неуспешных запросов. Когда максимум достигнут, клиент возвращает последний полученный ответ.

multiplier

тип: float по умолчанию: 2

New in version 5.2: Опция multiplier была представлена в Symfony 5.2.

Это значение умножается на ожидание каждый раз при возникновении повторной попытки, чтобы распределить повторные попытки во времени, а не делать их все друг за другом.

no_proxy

тип: string | null по умолчанию: null

Список хостингов, разделенный запятыми, которые не требуют достижения прокси, даже если он сконфигурирован; Используйте заполнитель '*', чтобы совпадали все хостинги, и пустую строку, чтобы не совпадал ни одни (отключает прокси).

passphrase

тип: string

Кодовая фраза, используемая для шифрования сертификата, хрнаящегося в файле, определенном в опции local_cert.

peer_fingerprint

тип: array

При рассмотрении TLS или SSL соединения, сервер отправляет сертификат, указывающий на его идентичность. Публичный ключ извлекается из этого сертификата, и если он точно не совпадает ни с одним из предоставленных в этой опции публичных ключей, соединение прерывается до отправки или получения любых данных.

Значение этой опции - ассоциированный массив algorithm => hash (например, ['pin-sha256' => '...']).

proxy

тип: string | null

HTTP-прокси для использования в запросах. Оставьте как null, чтобы определять прокси автоматически, основываясь на конфигурации вашей системы.

query

тип: array

Ассоциированный массив значений строки запросы, добавленных к URL перед выполнением запроса. Это значение должно использовать формат ['parameter-name' => parameter-value, ...].

resolve

тип: array

Список имен хостингов и их IP-адресов для предварительного наполнения DNS-кеша, используемого HTTP-клиентом для того, чтобы избежать поиска этих хостингов в DNS. Эта опция полезна для улучшения безопасности, когда IP проверяются перед тем, как URL передается клиенту, и делает ваши тесты проще.

Значение этой опции является ассциированным массивом domain => IP address (например, ['symfony.com' => '46.137.106.254', ...]).

retry_strategy

тип: string

New in version 5.2: Опция retry_strategy была представлена в Symfony 5.2.

Сервис используется, чтобы решить, стоит ли делать повторную попытку запроса, и вычислить время ожидания между попытками. По умолчанию, использует экземпляр GenericRetryStrategy, сконфигурированный с опциями http_codes, delay, max_delay, multiplier и jitter. Этот класс должен реализовать RetryStrategyInterface.

scope

тип: string

Только для видимых клиентов: регулярное выражение, которому должен соответствовать URL перед его применением ко всем другим опциям не по умолчанию. По умолчанию, область выводится из base_uri.

timeout

тип: float по умолчанию: зависит от вашей конфигурации PHP

Время, в секундах, для ожидания ответа. Если ответ будет без состояния дольше, вызывается TransportException. Значение по умолчанию такое же, как и значение опции конфигурации PHP default_socket_timeout.

verify_host

тип: boolean по умолчанию: true

Если true, сертификат, отправленный другими серверами, верифицируется, чтобы гарантировать, что их общее имя совпадает с хостингом, влкюченным в URL. Обычно комбинируется с verify_peer, чтобы также верифицировать аутентичность сертификата.

verify_peer

тип: boolean по умолчанию: true

Если true, сертификат, отправленный другими серверами, при выборе между TLS или SSL соединениями, верифицируется на аутентичность. Аутентификации сертификата недостаточно, чтобы быть уверенными в сервере, поэтому вы должны комбинировать это с опцией verify_host.

profiler

enabled

тип: boolean по умолчанию: false

Профилировщик может быть включен путём установки этой опции, как true. Когда вы используете стандартную версию Symfony, профилировщик включается в окружениях dev и test.

Note

Профилировщик работает независимо от панели инструментов веб-разработки, см. конфигурацию WebProfilerBundle, чтобы узнать, как включать и отключать панель инструментов.

collect

тип: boolean по умолчанию: true

Эта опция конфигурирует то, как ведёт себя профилировщик, когда он включен. Если установлена, как true, то профилировщик собирает данные для всех запросов. Если вы хотите собирать информацию только по запросу, то вы можете установить отметку collect, как false, и активировать сборщики данных вручную:

$profiler->enable();

only_exceptions

тип: boolean по умолчанию: false

Когда она установлена, как true, профилировщик будет включен только, когда вызывается исключение во время обработки запроса.

only_main_requests

тип: boolean по умолчанию: false

New in version 5.3: Опция only_main_requests была представлена в Symfony 5.3. В предыдущих версиях она называлась only_master_requests.

Когда установлена как true, профилировщик будет включен только в главных запросах (а не в подзапросах).

dsn

тип: string по умолчанию: 'file:%kernel.cache_dir%/profiler'

DSN, где хранить информацию профилирования.

rate_limiter

name

тип: prototype

Имя слушателя частоты, которого вы хотите создать.

lock_factory

тип: string по умолчанию: lock.factory

Сервис, используемый для создания блокировки. Сервис должен быть экземпляром класса LockFactory.

policy

тип: string обязательно

Имя алгоритма ограничителя частоты, который нужно использовать. К примеру, fixed_window, sliding_window и no_limit. См. Политика ограничителей частоты), чтобы узнать больше.

request

formats

тип: array по умолчанию: []

Эта настройка используется для ассоциации дополнительных форматов запросов (например, html) к одному или более mime-типам (например, text/html), которая позволит вам использовать формат и mime-типы для вызова Request::getFormat($mimeType) или Request::getMimeType($format).

На практике, это важно, так как Symfony использует её, чтобы автоматически устанавливать заголовок Content-Type в Response (если вы не указываете его ясно). Если вы передадите массив mime-типов, первый будет использован для заголовка.

Чтобы сконфигурировать формат jsonp:

  • YAML
    1
    2
    3
    4
    5
    # config/packages/framework.yaml
    framework:
        request:
            formats:
                jsonp: 'application/javascript'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony
            http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:request>
                <framework:format name="jsonp">
                    <framework:mime-type>application/javascript</framework:mime-type>
                </framework:format>
            </framework:request>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->request()
            ->format('jsonp', 'application/javascript');
    };
    

router

resource

тип: string обязательно

Путь главного источника маршрутизации (например, YAML-файл), содержащий маршруты и импорт, который должен загружать маршрутизатор.

type

тип: string

Тип источника, намекающий загрузчикам о формате. Не нужно, если вы используете маршрутизаторы по умолчанию с ожидаемыми расширениями файлов (.xml, .yml или .yaml, .php)

default_uri

тип: string

New in version 5.1: Опция default_uri была представлена в Symfony 5.1.

URI по умолчанию, используемый для генерирования URL в контексте вне HTTP (см. Генерирование URL в командах).

http_port

тип: integer по умолчанию: 80

Порт для нормальных http-запросов (используется при сопоставлении схемы).

https_port

тип: integer по умолчанию: 443

Порт для http-запросов (используется при сопоставлении схемы).

strict_requirements

тип: mixed по умолчанию: true

Определяет поведение генератора маршрутизации. При генерировании маршрута, который имеет особенные требования параметров, генератор может вести себя по-другому, если использованные параметры не соответствуют этим требованиям.

Значение может быть следующим:

true
Выдать исключение, если требования не выполнены;
false
Отключить исключения, если требования не выполнены и вернуть вместо этого '';
null
Отключить проверку требований (т.е. сопоставлять маршрут даже если требования не выполнены).

true рекомендуется в окружении разработки, а false или null - лучше в производстве.

utf8

тип: boolean по умолчанию: false

Deprecated since version 5.1: Не установка этой опции устарела в Symfony 5.1. Более того, значение по умолчанию этой опции изменится на true в Symfony 6.0.

Когда эта опция установлена как true, регулярные выражения, используемые в требованиях параметров маршрута, будут запущены с использованием модификатора utf-8. Это, к примеру, будет совпадать с любым символом UTF-8 при использовании ., вместо соотнесения только с одним байтом.

Если набор знаков вашего приложения - UTF-8 (как определено в методе getCharset() вашего ядра), рекомендуется установить true. Это приведет к тому, что не-UTF8 URL будут генерировать ошибки 404.

session

storage_factory_id

тип: string по умолчанию: 'session.storage.factory.native'

ID сервиса, используемого для создания SessionStorageInterface, который хранит сессию. Этот сервис доступен в приложении Symfony через псевдоним сервиса session.storage.factory. Класс должен реализовать SessionStorageFactoryInterface. Чтобы увидеть список всех доступных хранилищ, выполните:

1
$ php bin/console debug:container session.storage.factory.

New in version 5.3: Опция storage_factory_id была представлена в Symfony 5.3.

handler_id

тип: string по умолчанию: 'session.handler.native_file'

Id сервиса, используемый для хранения сессии. Значение по умолчанию, 'session.handler.native_file', позволит Symfony управлять сессиями самостоятельно, используя файлы для хранения метаданных сессий. Установите как null, чтобы использовать нативный механизм PHP-сессии. Вы также можете хранить сессии в базе данных.

name

тип: string по умолчанию: null

Указывается имя cookie сессии. По умолчанию будет использоваться имя cookie, определённое в php.ini с директивой session.name.

cache_limiter

тип: string или int по умолчанию: ''

Если установлено, как 0, Symfony не будет устаналивать конкретный заголовок, связанный с кешем, и будет полагаться на метод контроля кеша, сконфигурированный в опции PHP.ini session.cache-limiter.

В отличие от другий опций сессии, cache_limiter установлена как обычный параметр контейнера:

  • YAML
    1
    2
    3
    4
    # config/services.yaml
    parameters:
        session.storage.options:
            cache_limiter: 0
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/services.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd">
    
        <parameters>
            <parameter key="session.storage.options" type="collection">
                <parameter key="cache_limiter">0</parameter>
            </parameter>
        </parameters>
    </container>
    
  • PHP
    1
    2
    3
    4
    // config/services.php
    $container->setParameter('session.storage.options', [
        'cache_limiter' => 0,
    ]);
    

gc_divisor

тип: integer по умолчанию: 100

См. gc_probability.

gc_probability

тип: integer по умолчанию: 1

Определяет вероятность того, что процесс сбора мусора будет (СМ) начат при инициализации каждой сессии. Вероятность высчитывается с использованием gc_probability / gc_divisor, например, 1/100 означает, что есть 1% шанса, что СМ будет проводиться в каждом запросе.

gc_maxlifetime

тип: integer по умолчанию: 1440

Определяет количество секунд, после которого данные будут рассматриваться, как “мусор” и потенциально будут убраны. СМ может произойти во время начала сессии и зависит от gc_divisor и gc_probability.

sid_length

тип: integer по умолчанию: 32

Определяет длину ID строки сессии, которая может быть целым числом между 22 и 256 (включительно), где 32 - рекомендованное значение. Более длинные ID cессий сложнее угадывать.

Эта опция связана с PHP-опцией session.sid_length.

sid_bits_per_character

тип: integer по умолчанию: 4

Определяет количество битов в зашифрованном ID символе сессии. Возможные значения - 4 (0-9, a-f), 5 (0-9, a-v), и 6 (0-9, a-z, A-Z, “-“, “,”). Большее количество битов приводит к более крепкому ID сессии. 5 является рекомендованным значением для большинства окружений.

Эта опция связана с PHP-опцией session.sid_bits_per_character.

save_path

тип: string по умолчанию: %kernel.cache_dir%/sessions

Определяет аргумент, передаваемый обработчику сохранения. Если вы выберете обработчик файлов по умолчанию, то это путь, по которому создаются файлы сессии. Чтобы узнать больше, см Конфигурация каталога, где сохраняются файлы сессии.

Вы также можете установить это значение, как save_path вашего php.ini, установив значение, как null:

  • YAML
    1
    2
    3
    4
    # config/packages/framework.yaml
    framework:
        session:
            save_path: ~
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:session save-path="null" />
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->session()
            ->savePath(null);
    };
    

metadata_update_threshold

тип: integer по умолчанию: 0

Это то, сколько секунд ждать между обновлением / написанием метаданных сессии. Это может быть ползено, если, по какой-то причине, вы хотите ограничить частоту, с которой сохраняется сессия, вместо того, чтобы делать это при каждом запросе.

enabled

тип: boolean по умолчанию: true

Включать ли поддержку сессии во фреймворке.

  • YAML
    1
    2
    3
    4
    # config/packages/framework.yaml
    framework:
        session:
            enabled: true
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:session enabled="true"/>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->session()
            ->enabled(true);
    };
    

use_cookies

тип: boolean по умолчанию: null

Указывает, хранится ID сессии на клиентской стороне, используя куки, или нет. По умолчанию, использует значение, определенное в php.ini с директивой session.use_cookies.

assets

base_path

тип: string

Эта опция позволяет вам определять базовый путь для использования с ресурсами:

  • YAML
    1
    2
    3
    4
    5
    # config/packages/framework.yaml
    framework:
        # ...
        assets:
            base_path: '/images'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:assets base-path="/images" />
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            ->basePath('/images');
    };
    

base_urls

тип: array

Эта опция позволяет вам определять базовые URL для использования с ресурсами. Если предоставлено несколько базовых URL, Symfony будет выбирать из коллекции один каждый раз, когда будет генерировать путь ресурса:

  • YAML
    1
    2
    3
    4
    5
    6
    # config/packages/framework.yaml
    framework:
        # ...
        assets:
            base_urls:
                - 'http://cdn.example.com/'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:assets base-url="http://cdn.example.com/" />
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            ->baseUrls(['http://cdn.example.com/']);
    };
    

packages

Вы можете группировать ресурсы в пакеты, чтобы указать для них разные базовые URL:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    # config/packages/framework.yaml
    framework:
        # ...
        assets:
            packages:
                avatars:
                    base_urls: 'http://static_cdn.example.com/avatars'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:assets>
                <framework:package
                    name="avatars"
                    base-url="http://static_cdn.example.com/avatars" />
            </framework:assets>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            ->package('avatars')
                ->baseUrls(['http://static_cdn.example.com/avatars']);
    };
    

Теперь вы можете использовать пакет avatars в ваших шаблонах:

1
<img src="{{ asset('...', 'avatars') }}">

Каждый пакет может сконфигурировать следующие опции:

version

тип: string

Эта опция используется для аннулирования кеша в ресурсах, глобально добавив параметр запроса ко всем отображённым путям ресурсов (например, /images/logo.png?v2). Это применяется только к ресурсам, отображённым через функцию Twig asset() (или PHP эквивалентом).

Например, представьте, что у вас есть следующее:

1
<img src="{{ asset('images/logo.png') }}" alt="Symfony!"/>

По умолчанию, это отобразит путь к вашему изображению так: /images/logo.png. Теперь, активируйте опцию version:

  • YAML
    1
    2
    3
    4
    5
    # config/packages/framework.yaml
    framework:
        # ...
        assets:
            version: 'v2'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:assets version="v2"/>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            ->version('v2');
    };
    

Теперь, тот же ресерс будет отображаться, как /images/logo.png?v2. Если вы используете эту функцию, вы должны вручную увеличить значение version до каждого развёртывания, чтобы параметры запросов изменялись.

Вы также можете контролировать то, как работает строка запросов, через опцию version_format.

Note

Этот параметр не может быть установлен одновременно с version_strategy или json_manifest_path.

Tip

Как и со всеми настройками, вы можете использовать параметр в качестве значения для version. Это облегчает увеличение кеша при каждом развёртывании.

version_format

тип: string по умолчанию: %%s?%%s

Определяет схему sprintf, которая будет использована опцией version, чтобы построить путь ресурса. По умолчанию, схема добавляется к версии ресурса в качестве строки запроса Например, если version_format установлен, как %%s?version=%%s, а version - как 5, то путь ресурса будет /images/logo.png?version=5.

Note

Все знаки процента (%) в формате строки должны быть удвоены, чтобы экранировать знак. Без экранирования, значения могут быть по неострожности восприняты, как Service Parameters.

Tip

Некоторые сети доставки контента (CDN) не поддерживают аннуляцию кеша через строки запроса, так что необходимо внедрение версии в сам путь файла. К счастью, version_format не ограничен вырабатыванием версионированных строк запроса.

Схема получает оригинальный путь ресурса и версию в качестве первого и второго параметров, соответственно. Так как путь ресурса - это один параметр, вы не можете изменить его на месте (например, /images/logo-v5.png); однако, вы можете добавить префикс к пути ресурса, используя схему version-%%2$s/%%1$s, которая приведёт к пути в виде version-5/images/logo.png.

Правила переписывания URL потом могут быть использованы для того, чтобы не учитывать префикс версии до обслуживания ресурса. Как вариант, вы можете скопировать ресурсы в соответствующий путь версии в качестве части вашего процесса развёртывания и забыть о переписывании URL. Последний вариант полезе, если вы хотите, чтобы более старые версии реурсов оставались доступными по их оригинальным URL.

version_strategy

тип: string по умолчанию: null

Id сервиса стратегии версий ресурсов применяется к ресурсам. Эта опция может быть установлена глоабльно для всех ресурсов, и индивидуально для каждого пакета ресурсов:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
     # config/packages/framework.yaml
    framework:
         assets:
             # эта стратегия применяется к каждому ресурсу (включая пакеты)
             version_strategy: 'app.asset.my_versioning_strategy'
             packages:
                 foo_package:
                     # этот пакет удаляет всё версионирование (его ресурсы не будут версионированы)
                     version: ~
                 bar_package:
                     # этот пакет использует свою собственную стратегию (стратегия по умолчанию игнорируется)
                     version_strategy: 'app.asset.another_version_strategy'
                 baz_package:
                     # этот пакет наследует стратегию по умолчанию
                     base_path: '/images'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:assets version-strategy="app.asset.my_versioning_strategy">
                <!-- этот пакет удаляет всё версионирование (его ресурсы не будут версионированы) -->
                <framework:package
                    name="foo_package"
                    version="null" />
                <!-- этот пакет использует свою собственную стратегию (стратегия по умолчанию игнорируется) -->
                <framework:package
                    name="bar_package"
                    version-strategy="app.asset.another_version_strategy" />
                <!-- этот пакет наследует стратегию по умолчанию -->
                <framework:package
                    name="baz_package"
                    base_path="/images" />
            </framework:assets>
        </framework:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            ->versionStrategy('app.asset.my_versioning_strategy');
    
        $framework->assets()->package('foo_package')
            // этот пакет удаляет всё версионирование (его ресурсы не будут версионированы)
            ->version(null);
    
        $framework->assets()->package('bar_package')
            // этот пакет использует свою собственную стратегию (стратегия по умолчанию игнорируется)
            ->versionStrategy('app.asset.another_version_strategy');
    
        $framework->assets()->package('baz_package')
            // этот пакет наследует стратегию по умолчанию
            ->basePath('/images');
    };
    

Note

Этот параметр не может быть установлен однновременно с version или json_manifest_path.

json_manifest_path

тип: string по умолчанию: null

Путь файла к файлу manifest.json, содержащему ассоциативный массив имён ресурсов и их соответствующих скомпилированных имён. Распространённая техника сброса кеша, используя файл “manifest”, работает путём выписывания ресурсов с префиксом “hash” в их именах файлов (например, main.ae433f1cb.css) во время процесса фронт-энд компиляции.

Tip

Symfony Webpack Encore поддерживает вывод хешированных ресурсов. Более того, это можно инкорпорировать во множество других рабочих процессов, включая Webpack и Gulp, используя webpack-manifest-plugin и gulp-rev, соответственно.

Эта опция может быть установлена глобально для всех ресурсов и индивидуально для каждого пакета ресурса:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    # config/packages/framework.yaml
    framework:
        assets:
            # этот манифест применяется к каждому ресурсу (включая пакеты)
            json_manifest_path: "%kernel.project_dir%/public/build/manifest.json"
            # вы также можете использовать абсолютные URL, и Symfony скачает их автоматически
            # json_manifest_path: 'https://cdn.example.com/manifest.json'
            packages:
                foo_package:
                    # этот пакет использует собственный манифест (файл по умолчанию игнорируется)
                    json_manifest_path: "%kernel.project_dir%/public/build/a_different_manifest.json"
                bar_package:
                    # этот пакет использует глобальный манифест (файл по умолчанию используется)
                    base_path: '/images'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <!-- этот манифест применяется к каждому ресурсу (включая пакеты) -->
            <framework:assets json-manifest-path="%kernel.project_dir%/public/build/manifest.json">
            <!-- вы также можете использовать абсолютные URL, и Symfony скачает их автоматически -->
            <!-- <framework:assets json-manifest-path="https://cdn.example.com/manifest.json"> -->
                <!-- этот пакет использует собственный манифест (файл по умолчанию игнорируется) -->
                <framework:package
                    name="foo_package"
                    json-manifest-path="%kernel.project_dir%/public/build/a_different_manifest.json"/>
                <!-- этот пакет использует глобальный манифест (файл по умолчанию используется) -->
                <framework:package
                    name="bar_package"
                    base-path="/images"/>
            </framework:assets>
        </framework:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        // ...
        $framework->assets()
            // этот манифест применяется к каждому ресурсу (включая пакеты)
            ->jsonManifestPath('%kernel.project_dir%/public/build/manifest.json');
    
        // вы также можете использовать абсолютные URL, и Symfony скачает их автоматически
        // 'json_manifest_path' => 'https://cdn.example.com/manifest.json',
        $framework->assets()->package('foo_package')
            // этот пакет использует собственный манифест (файл по умолчанию игнорируется)
            ->jsonManifestPath('%kernel.project_dir%/public/build/a_different_manifest.json');
    
        $framework->assets()->package('bar_package')
            // этот пакет использует глобальный манифест (файл по умолчанию используется)
            ->basePath('/images');
    };
    

New in version 5.1: Опция использовать абсолютный URL в json_manifest_path была представлена в Symfony 5.1.

Note

Этот параметр не может быть установлен одновременно с version или version_strategy. Кроме того, эта опция не может быть обнулена в масштабах пакета, если указан глобальный файл манифеста.

Tip

Если вы запросите ресурс, который не найден в файле manifest.json, будет возвращён исходный неизменённый путь ресурса.

Note

Если URL установлен, JSON-манифест скачивается по каждому запросу, используя http_client.

translator

cache_dir

тип: string | null по умолчанию: %kernel.cache_dir%/translations/

Определяет каталог, где хранится кеш перевода. Используйте null, чтобы отключить этот кеш.

enabled

тип: boolean по умолчанию: true или false, в зависимости от вашей установки

Подключать ли сервис translator в сервис-контейнере.

enabled_locales

тип: array по умолчанию: [] (пустой массив = подключить все локали)

New in version 5.1: Опция enabled_locales была представлена в Symfony 5.1.

Deprecated since version 5.4: Использование framework.translator.enabled_locales устарело, уступив место framework.enabled_locales, начиная с Symfony 5.4.

fallbacks

тип: string|array по умолчанию: значение default_locale

Эта опция используется, когда ключ перевода для текущей локали не был найден.

See also

Чтобы узнать больше, см. Translations.

logging

по умолчанию: true когда включен режим отладки, false - когда нет.

Когда true, то запись логов делается каждый раз, когда переводчик не может найти перевод для заданного ключа. Логи делаются в канале translation и на в уровне debug для ключей, когда в резервной локали есть перевод, и на уровне warning, если нет перевода для использования.

formatter

тип: string по умолчанию: translator.formatter.default

ID сервиса, используемого для форматирования сообщений перевода. Класс сервиса должен реализовать MessageFormatterInterface. .. _reference-translator-paths-ru:

paths

тип: array по умолчанию: []

Эта опция позволяет определить массив путей, где компонент будет искать файлы перевода. Чем позже будет добавлен путь, тем большую приоритетность он будет иметь (переводы из более поздних путей будут перезаписивать более раниие). Переводы из default_path имеют больший приоритет, чем переводы из всех этих путей.

default_path

тип: string по умолчанию: %kernel.project_dir%/translations

Эта опция позволяет определять путь, где хранятся файлы переводов приложения.

providers

тип: array по умолчанию: []

New in version 5.3: Опция providers была представлена в Symfony 5.3.

Эта опция включает и конфигурирует поставщиков переводов, чтобы пушить и пуллить ваши переводы из/в сторонние сервисы перевода.

property_access

magic_call

тип: boolean по умолчанию: false

Когда включена, сервис property_accessor использует PHP метод magic __call(). когда вызывается его метод getValue().

magic_get

тип: boolean по умолчанию: true

Когда включена, сервис property_accessor использует PHP метод magic __get(), когда вызывается его метод getValue().

New in version 5.2: Опция magic_get была представлена в Symfony 5.2.

magic_set

тип: boolean по умолчанию: true

Когда включена, сервис property_accessor использует PHP метод magic __set(), когда вызывается его метод setValue().

New in version 5.2: Опция magic_set была представлена в Symfony 5.2.

throw_exception_on_invalid_index

тип: boolean по умолчанию: false

Когда включена, сервис property_accessor вызывает исключение, когда вы пробуете получить доступ к невалидному индексу массива.

throw_exception_on_invalid_property_path

тип: boolean по умолчанию: true

Когда включена, сервис property_accessor вызывает исключение, если вы пытаетесь получить доступ к невалидному пути свойства объекта.

property_info

enabled

тип: boolean по умолчанию: true или false, взависимости от вашей установки

validation

enabled

тип: boolean по умолчанию: true или false, в зависимости от вашей установки

Включать поддержку валидации, или нет.

Эта опция будет автоматически установлена, как true, когда конфигурируется одна из дочерних настроек.

cache

тип: string

Сервис, используемый для сохранения метаданных класса в кеше. Сервис должен реализовывать CacheInterface.

Установите эту опцию, как validator.mapping.cache.doctrine.apc, чтобы использовать APC-кеш предоставленный из проекта Doctrine.

enable_annotations

тип: boolean по умолчанию: false

Если эта опция включена, ограничения валидации могут быть определены с использованием аннотаций.

translation_domain

тип: string | false по умолчанию: validators

Домен переводов, используемый при переводе сообщений ошибок ограничений валидации. Используйте false, чтобы отключить переводы.

not_compromised_password

Ограничение NotCompromisedPassword делает HTTP-запросы к публичному API, чтобы проверить, был ли заданный пароль скомпроментирован при утечке данных.

enabled

тип: boolean по умолчанию: true

Если вы установите эту опцию как false, ни один HTTP-запрос не будет сделан, а заданный пароль будет считаться валидным. Это полезно, когда вы не хотите или не можете делать HTTP- запросы, например, в окружениях dev и test, или на серверах непрерывной интеграции.

endpoint

тип: string по умолчанию: null

По умолчанию, ограничение NotCompromisedPassword использует публичный API, предоставленный haveibeenpwned.com. Эта опция позволяет определять другую, но совместимую, конечную точку API, чтобы проводить проверки паролей. Полезно, к примеру, когда приложение Symfony запущено в интранете, без публичного доступа к интернету.

static_method

тип: string | array по умолчанию: ['loadValidatorMetadata']

Определяет имя статического метода, который вызывается для загрузки метаданных валидации класса. Вы можете определить массив строк с именами нескольких методов. В таком случае, они все будут вызваны по порядку, чтобы загрузить метаданные.

email_validation_mode

тип: string по умолчанию: loose

Устанавливает значение по умолчанию для опции “mode” для валидатора Email.

mapping

paths

тип: array по умолчанию: ['config/validation/']

Эта опция позволяет определять массив путей с файлами или каталогами, где компонент будет искать дополнительные файлы валидации.

  • YAML
    1
    2
    3
    4
    5
    6
    # config/packages/framework.yaml
    framework:
        validation:
            mapping:
                paths:
                    - "%kernel.project_dir%/config/validation/"
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:validation>
                <framework:mapping>
                    <framework:path>%kernel.project_dir%/config/validation/</framework:path>
                </framework:mapping>
            </framework:validation>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->validation()
            ->mapping()
                ->paths(['%kernel.project_dir%/config/validation/']);
    };
    

annotations

cache

тип: string по умолчанию: 'php_array'

Эта опция может быть одним из следующих значений:

php_array
Использовать PHP-массив, чтобы кешировать аннотации в памяти
file
Использовать файловую систему для кеширования аннотаций
none
Отключить кеширование аннотаций
service id
id сервиса, ссылающийся на реализацию Кеша Doctrine

Deprecated since version 5.3: Использование ID сервиса в качестве значения cache устарело в Symfony 5.3.

file_cache_dir

тип: string по умолчанию: '%kernel.cache_dir%/annotations'

Каталог для хранения файлов кеша для аннотаций, в случае, если annotations.cache установлен, как 'file'.

debug

тип: boolean по умолчанию: %kernel.debug%

Включать режим отладки для кеширования, или нет. Если включен, то кеш будет автоматически обновлён, когда изменяется исходный файл (с изменениями и кода и аннотации). По причинам производительности, рекомендуется отключать режим отладки в производстве, что случится автоматически, если вы используете значение по умолчанию.

secrets

decryption_env_var

тип: string по умолчанию: base64:default::SYMFONY_DECRYPTION_SECRET

Переменная окружения, которая содержит ключ дешифровки.

local_dotenv_file

тип: string по умолчанию: %kernel.project_dir%/.env.%kernel.environment%.local

Путь к файлу dotenv, хранящему секреты. В основном используется для тестирования.

vault_directory

тип: string по умолчанию: %kernel.project_dir%/config/secrets/%kernel.environment%

Каталог, где хранится хранилище секретов.

serializer

enabled

тип: boolean по умолчанию: true или false, в зависимости от вашей установки

Включать сервис serializer в сервис-контейнере, или нет.

enable_annotations

тип: boolean по умолчанию: false

Если эта опция включен, группы сериализации могут быть определены с использованием аннотаций.

See also

Чтобы узнать больше, см. Using Serialization Groups Annotations.

name_converter

тип: string

Конвертер имён для использования. Конвертер имён CamelCaseToSnakeCaseNameConverter может быть включен, используя значение serializer.name_converter.camel_case_to_snake_case.

circular_reference_handler

тип string

Id сервиса, который используется как обработчик циклической зависимоти сериализатора по умолчанию. Сервис должен реализовывать волшебный метод __invoke($object).

See also

Чтобы узнать больше, см. Collecting Type Errors While Denormalizing.

mapping

paths

тип: array по умолчанию: []

Эта опция позволяет определять массив путей с файлами или каталогами, где компонент будет искать дополительные файлы сериализации.

php_errors

log

тип: boolean|int по умолчанию: %kernel.debug%

Использовать логгер приложения вместо PHP-логгера для логирования PHP-ошибок. Когда используется значение целого числа, оно также устанавливает уровень логов. Эти значения целых чисел должны быть такими же, как используются в error_reporting PHP option.

Эта опция также принимает отображнение PHP-ошибок, чтобы вести логи уровней:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # config/packages/framework.yaml
    framework:
        php_errors:
            log:
                '!php/const \E_DEPRECATED': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_USER_DEPRECATED': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_NOTICE': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_USER_NOTICE': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_STRICT': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_WARNING': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_USER_WARNING': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_COMPILE_WARNING': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_CORE_WARNING': !php/const Psr\Log\LogLevel::ERROR
                '!php/const \E_USER_ERROR': !php/const Psr\Log\LogLevel::CRITICAL
                '!php/const \E_RECOVERABLE_ERROR': !php/const Psr\Log\LogLevel::CRITICAL
                '!php/const \E_COMPILE_ERROR': !php/const Psr\Log\LogLevel::CRITICAL
                '!php/const \E_PARSE': !php/const Psr\Log\LogLevel::CRITICAL
                '!php/const \E_ERROR': !php/const Psr\Log\LogLevel::CRITICAL
                '!php/const \E_CORE_ERROR': !php/const Psr\Log\LogLevel::CRITICAL
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <!-- в конфигурации XML вы можете использовать PHP-константы в качестве значения
                 атрибута 'type', что делает данный формат намного менее читаемым.
                 Рассматрите использование YAML или PHP для этой конфигурации -->
            <framework:log type="8" logLevel="error"/>
            <framework:log type="2" logLevel="error"/>
            <!-- ... -->
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // config/packages/framework.php
    use Psr\Log\LogLevel;
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->phpErrors()->log(\E_DEPRECATED, LogLevel::ERROR);
        $framework->phpErrors()->log(\E_USER_DEPRECATED, LogLevel::ERROR);
        // ...
    };
    

New in version 5.3: Опция отображать PHP-ошибки на уровнях ведения логов была представлена в Symfony 5.3.

throw

тип: boolean по умолчанию: %kernel.debug%

Вызывает PHP-ошибки, как экземпляры \ErrorException. Параметр debug.error_handler.throw_at контролирует порог.

cache

app

тип: string по умолчанию: cache.adapter.filesystem

Адаптер кеша, используемый сервисом cache.app. FrameworkBundle поставляется с несколькими адаптерами: cache.adapter.apcu, cache.adapter.doctrine, cache.adapter.system, cache.adapter.filesystem, cache.adapter.psr6, cache.adapter.redis, cache.adapter.memcached и cache.adapter.pdo.

Также сущетвует специальный адаптер под названием cache.adapter.array, который хранит содержимое памяти, используя PHP массив и используется для отключения кеширования (в основном в окружении dev).

Tip

Вначале это может быть тяжело понять, так что, чтобы избежать путаницы, помните, что все пулы выполняют одинаковые действия, но на разных уровнях, учитывая адаптер, на котором они основываются. Внутренне, пул оборачивает определение адаптера.

system

тип: string по умолчанию: cache.adapter.system

Адаптер кеша, ипользуемый сервисом cache.system. Он поддерживает те же адаптеры, что доступны для сервиса cache.app.

directory

тип: string по умолчанию: %kernel.cache_dir%/pools

Путь к каталогу кеша, используемый сервисами, наследующими из адаптера cache.adapter.filesystem (включая cache.app).

default_doctrine_provider

тип: string

Имя сервиса для использования в качестве вашего поставщика Doctrine по умолчанию. Поставщик доступен в качестве сервиса cache.doctrine.

default_psr6_provider

тип: string

Имя сервиса для использования в качестве вашего поставщика PSR-6 по умолчанию. Он доступен в качестве сервиса cache.psr6.

default_redis_provider

тип: string по умолчанию: redis://localhost

DSN для использования поставщиком Redis. Поставщик доступен в качестве сервиса cache.redis.

default_memcached_provider

тип: string по умолчанию: memcached://localhost

DSN для использования провайдером Memcached. Провайдер доступен в качестве сервиса cache.memcached.

pools

тип: array

Список пулов кеша, который должен быть создан расширением фреймворка.

See also

Чтобы узнать болше о том, как работают пулы, см. пулы кеша.

Чтобы сконфигурировать пул кеша Redis с циклом жизни в 1 час, сделайте следующее:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    # config/packages/framework.yaml
    framework:
        cache:
            pools:
                cache.mycache:
                    adapter: cache.adapter.redis
                    default_lifetime: 3600
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!-- config/packages/framework.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:cache>
                <framework:pool
                    name="cache.mycache"
                    adapter="cache.adapter.redis"
                    default-lifetime="3600"
                />
            </framework:cache>
            <!-- ... -->
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // config/packages/framework.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->cache()
            ->pool('cache.mycache')
                ->adapters(['cache.adapter.redis'])
                ->defaultLifetime(3600);
    };
    
name

тип: prototype

Имя пула, который вы хотите создать.

Note

Ваше имя пула должно отличаться от cache.app или cache.system.

adapter

тип: string по умолчанию: cache.app

Сервисное имя адаптера для использования. Вы можете указать один из сервисов по умолчанию, которые следуют паттерну cache.adapter.[type]. Кроме того, вы можете указать другой пул кеша в качестве основного, что заставит этот пул унаследовать настройки из основного пула по умолчанию.

Note

Ваш сервис ДОЛЖЕН реализовывать интерфейс Psr\Cache\CacheItemPoolInterface.

public

тип: boolean по умолчанию: false

Должен ваш сервис быть публичным, или нет.

tags

тип: boolean | string по умолчанию: null

Должен ли ваш сервис иметь возможность обрабатывать теги. Также может быть id сервиса другого пула кеша, где будут храниться теги.

default_lifetime

тип: integer | string

Жизненный цикл ваших объектов кеша по умолчанию. Задайте значение целого числа, чтобы установить жизненный цикл в секундах. Значение строки может быть временным интервалом ISO 8601, вроде "PT5M", или PHP-выражением даты, которое принимается strtotime(), вроде "5 minutes".

Если значение не предоставлено, адаптер кеша будет резервно использовать значение по умолчанию в реальном хранилище кеша.

provider

тип: string

Перезаписать имя сервиса по умолчанию или DSN, соответственно, если вы не хотите использовать то, что сконфигурировано как default_X_provider под cache. Смотрите описание настройки поставщика по умолчанию выше, чтобы узнать, какой тип адаптера вы используете и информацию о том, как указать этого поставщика.

clearer

тип: string

Очиститель кеша, используемый для очистки вашего PSR-6 кеша.

See also

Чтобы узнать больше, см. Psr6CacheClearer.

prefix_seed

тип: string по умолчанию: _%kernel.project_dir%.%kernel.container_class%

Это значеиие используется в качестве части “пространства имён”, сгенерированного для ключей объектов кеша. Частая практика - использовать уникальное имя приложения (например, symfony.com), так как это предотвращает конфликты именования при запуске нескольких приложений по одному пути (на разных серверах), которые используют одинаковый бэк-энд кеша.

Это также полезно при использовании стратегий синего/зелёного запуска и даже чаще, когда вам нужно абстрагироваться от настоящего каталога развёртывания (например, при разогрефе кеша офлайн).

New in version 5.2: Начиная с Symfony 5.2, параметр %kernel.container_class% больше автоматически не добавляется к значению этой опции. Это позволяет использовать одни кеши в разных приложениях или разных окружениях.

lock

тип: string | ``array``|

Адаптер блокировки по умолчанию. Если не определён, то значение устанавливается, как semaphore, если доступно, а в других случаях, как flock. DSN также позволены.

enabled

тип: boolean default: true

Включать поддержку блокировки или нет. Эта настйрока автоматически установлена, как true, если сконфигурирована одна из дочерних настроейк.

resources

тип: array

Список хранилищ блокировок, которые должны быть созданы расширением фреймворка.

  • YAML
    1
    2
    3
    # config/packages/lock.yaml
    framework:
        lock: '%env(LOCK_DSN)%'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    <!-- config/packages/lock.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:lock>
                <framework:resource>%env(LOCK_DSN)%</framework:resource>
            </framework:lock>
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    // config/packages/lock.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->lock()
            ->resource('default', ['%env(LOCK_DSN)%']);
    };
    

See also

Чтобы узнать больше, см. Dealing with Concurrency with Locks.

name

тип: prototype

Имя блокировки, которую вы хотите создать.

mailer

dsn

тип: string по умолчанию: null

DSN, используемая почтовой программой. Когда могут быть использованы несколько DSN, стоит использовать опцию transports (см. ниже).

transports

тип: array

Список DSN, которые могут быть использованы почтовой программой. Имя транспорта является ключом, а dsn - значением.

message_bus

New in version 5.1: Опция message_bus была представлена в Symfony 5.1.

тип: string по умолчанию: null или автобус по умолчанию, если установлен компонент Messenger

Сервичный идентификатор автобуса сообщений, который нужно использовать при импользовании компонента Messenger (например, messenger.default_bus).

envelope

sender

тип: string

“Отправщик конверта”, который используется в качестве значения MAIL FROM во время SMTP-сессии. Это значение переопределяет любого другого отправителя, установленного в коде.

recipients

тип: array

“Получатель конверта”, который используется в качестве значения RCPT TO во время SMTP-сессии. Это значение переопределяет любого другого получателя, установленного в коде.

  • YAML
    1
    2
    3
    4
    5
    6
    # config/packages/mailer.yaml
    framework:
        mailer:
            dsn: 'smtp://localhost:25'
            envelope:
                recipients: ['[email protected]', '[email protected]']
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- config/packages/mailer.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
        <framework:config>
            <framework:mailer dsn="smtp://localhost:25">
                <framework:envelope>
                    <framework:recipient>[email protected]</framework:recipient>
                    <framework:recipient>[email protected]</framework:recipient>
                </framework:envelope>
            </framework:mailer>
        </framework:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    // config/packages/mailer.php
    namespace Symfony\Component\DependencyInjection\Loader\Configurator;
    
    return static function (ContainerConfigurator $containerConfigurator): void {
        $containerConfigurator->extension('framework', [
            'mailer' => [
                'dsn' => 'smtp://localhost:25',
                'envelope' => [
                    'recipients' => [
                        '[email protected]',
                        '[email protected]',
                    ],
                ],
            ],
        ]);
    };
    

headers

New in version 5.2: Опция headers была представлена в Symfony 5.2.

тип: array

Заголовки, которые нужно добавить к письмам. Ключ (атрибут name в xml-формате) - это имя заголовка, а значение - значение заголовка.

See also

Чтобы узнать больше, см. Глобальная конфигурация электронных писем

workflows

тип: array

Список рабочих процессов, которые должны быть созданы расширением фреймворка:

  • YAML
    1
    2
    3
    4
    5
    # config/packages/workflow.yaml
    framework:
        workflows:
            my_workflow:
                # ...
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    <!-- config/packages/workflow.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:framework="http://symfony.com/schema/dic/symfony"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
    
        <framework:config>
            <framework:workflows>
                <framework:workflow
                    name="my_workflow"/>
            </framework:workflows>
            <!-- ... -->
        </framework:config>
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // config/packages/workflow.php
    use Symfony\Config\FrameworkConfig;
    
    return static function (FrameworkConfig $framework) {
        $framework->workflows()
            ->workflows('my_workflow')
                // ...
        ;
    };
    

enabled

тип: boolean default: false

Включать поддержку рабочих процессов, или нет. Эта настройка автоматически установлена, как true, если сконфигурирована одна из дочерних настроек.

name

тип: prototype

Имя рабочего процесса, который вы хотите создать.

audit_trail

тип: boolean

Если установлена, как true, AuditTrailListener будет включен.

initial_marking

тип: string | array

Либо places, либо empty. Если не null, и поддерживаемый объект еще не инициализирован через рабочий процесс, будет установлено это место.

marking_store

тип: array

Каждое хранилище маркировок может определять любую из этих опций:

  • arguments (тип: array)
  • service (тип: string)
  • type (тип: string разрешенное значение: 'method')
metadata

тип: array

Метаданные, доступные для конфигурации рабочего процесса. Отметьте, что places и transitions также могут иметь собственную запись metadata.

places

тип: array

Все доступные места (тип: string) для конфигурации рабочего процесса.

supports

тип: string | array

FQCN (полностью определенное имя класса) объекта, поддерживаемого конфигурацией рабочего процесса, или массив FQCN, если поддерживается несколько объектов.

support_strategy

тип: string

transitions

тип: array

Каждое хранилище маркировки может определять любую из этих опций:

  • from (тип: string или array) значение из places, множество значений разрешены как для workflow, так и для state_machine;
  • guard (тип: string) совместимое с ExpressionLanguage выражение для блокировки перехода;
  • name (тип: string) имя перехода;
  • to (тип: string или array) значение из places, множество значений разрешены только для workflow.
type

тип: string возможные значения: 'workflow' или 'state_machine'

Определяет тип рабочего процесса, который будет создан, и может быть либо нормальным рабочим процессом, либо машиной состояний. Прочтите эту статью, чтобы узнать разницу.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.