Дата обновления перевода 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
.
See also
Изменение действия и HTTP-метода форм Symfony.
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
Путь файла центра сертификации, который содержит один или более сертификатов, используемых для верификации сертификатов других серверов.
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
.
cookie_lifetime¶
тип: integer
по умолчанию: null
Определяет жизненный цикл сессии в секундах. Значение по умолчанию, null
,
означает, что будет использовано значение session.cookie_lifetime
из
php.ini
. Установка этого значения, как 0
, означает, что cookie валиден
в течение длительности сессии браузера.
cookie_path¶
тип: string
по умолчанию: /
Определяет путь для установки в cookie сессии. По умолчанию будет использоваться
/
.
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, ]);
cookie_domain¶
тип: string
по умолчанию: ''
Определяет домен для установки в cookie сессии. По умолчанию пустой, что означает, что имя хоста сервера, сгенерировавшего cookie в соответствии со спецификацией cookie.
cookie_samesite¶
тип: string
или null
по умолчанию: 'lax'
Контролирует, как отправляются куки, когда HTTP-запрос произошел не с того же домена, с которым ассоциированы куки. Установка этой опции рекомендуется для ослабления `атак безопасности CSRF`_.
По умолчанию, браузеры отправляют все куки, связанные с доменом HTTP-запроса.
Это может быть проблемой, к примеру, когда вы посещаете форум, и какой-то зловредный
комментарий включает в себя ссылку вроде
https://some-bank.com/?send_money_to=attacker&amount=1000
. Если вы ранее выполнили
вход в систему вашего сайта, браузер отправит все эти куки при совершении HTTP-запроса.
Возможные значения этой опции:
null
, используйте для отключения этой защиты. Такое же поведение, как и в более старых версиях Symfony.'none'
(или константаSymfony\Component\HttpFoundation\Cookie::SAMESITE_NONE
), используйте для позволения отправки куки, если HTTP-запрос происходит из другого домена (ранее это было поведением по умолчанию для null, но в более новых браузерах будет применяться'lax'
, когда заголовок еще не был установлен)'strict'
(или константаCookie::SAMESITE_STRICT
), используйте, чтобы никогда не отправлять никаких куки, если HTTP-запрос не происходит с того же домена.'lax'
(или константаCookie::SAMESITE_LAX
), используйте, чтобы разрешить отправку куки, когда запрос происходит с другого домена, но только когда пользователь осознанно сделал запрос (нажав на ссылку или отправив форму с методомGET
).
Note
Эта опция доступна начиная с PHP 7.3, но Symfony имеет полизаполнение, поэтому вы можете использовать ее и с любой другой более старой версией PHP.
cookie_secure¶
тип: boolean
или 'auto'
по умолчанию: `'auto'
Определяет, должны ли куки отправляться только по защищённым связям. В
дополнение к true
и false
, имеется специальное значение 'auto'
,
которое означает true
для HTTPS-запросов, и false
для HTTP-запросов.
cookie_httponly¶
тип: boolean
по умолчанию: true
Определяет, должны ли cookie быть доступны только через HTTP-протокол. Это означает, что cookie не будут доступны скриптовым языкам, вроде JavaScript. Эта установка может эффективно помочь снизить случаи кражи личности через XSS-атаки.
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
Определяет аргумент, передаваемый обработчику сохранения. Если вы выберете обработчик файлов по умолчанию, то это путь, по которому создаются файлы сессии. Чтобы узнать больше, см /session/sessions_directory.
Вы также можете установить это значение, как 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
вызывает исключение, если вы пытаетесь
получить доступ к невалидному пути свойства объекта.
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
.
See also
Чтобы узнать больше, см. Конвертация имен свойств при сериализации и десериализации.
circular_reference_handler¶
тип string
Id сервиса, который используется как обработчик циклической зависимоти сериализатора
по умолчанию. Сервис должен реализовывать волшебный метод __invoke($object)
.
See also
Чтобы узнать больше, см. Collecting Type Errors While Denormalizing.
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
.
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.
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
Чтобы узнать больше, см. Глобальная конфигурация электронных писем
web_link¶
enabled¶
тип: boolean
по умолчанию: true
или false
, в зависимости от вашей установки
Добавляет к ответу HTTP-заголовок Link.
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') // ... ; };
See also
Также прочтите статью об использовании рабочих процессов в приложениях Symfony.
enabled¶
тип: boolean
default: false
Включать поддержку рабочих процессов, или нет. Эта настройка автоматически
установлена, как true
, если сконфигурирована одна из дочерних настроек.
name¶
тип: prototype
Имя рабочего процесса, который вы хотите создать.
initial_marking¶
тип: string
| array
Либо places
, либо empty
. Если не null, и поддерживаемый объект еще не инициализирован
через рабочий процесс, будет установлено это место.
marking_store¶
тип: array
Каждое хранилище маркировок может определять любую из этих опций:
arguments
(тип:array
)service
(тип:string
)type
(тип:string
разрешенное значение:'method'
)
metadata¶
тип: array
Метаданные, доступные для конфигурации рабочего процесса. Отметьте, что
places
и transitions
также могут иметь собственную запись metadata
.
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.