У меня есть приложение в Symfony 3.4, которое обслуживает несколько разных доменов, которые могут иметь определенные поддерживаемые языки. В соответствии с комбинацией домен / язык существует конкретный конфиг, который следует применять ко всем приложениям в разных местах.
У меня вопрос: как правильно применить этот конфиг, который можно использовать в разных сервисах приложений?
«Дух» этого вида конфигурации указывает мне на параметры, которые легко используются в приложении Symfony. Однако вопрос все еще остается — как сделать их динамичными?
Похоже, я нашел решение. Вам нужно будет использовать Возможность Symfony создавать внешние параметры в PHP-файле.
Итак, сначала вам нужно добавить это к вашему config.yml
файл:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: site.php }
В app/config/site.php
у вас будет что-то вроде этого:
<?php
if (substr_compare($_SERVER['HTTP_HOST'], 'mybrand.nl', -strlen('mybrand.nl')) === 0) {
$container->setParameter('site.brand', 'mybrand');
$container->setParameter('site.language', 'nl');
}
И тогда где-то в вашем приложении вы можете использовать определенный параметр $this->getParameter('site.brand')
или в конфигурации услуг %site.brand%
,
Помните, что у вас не будет всех полезных сервисов Symfony и тому подобного в этом PHP-файле — только пустые внутренние компоненты PHP, глобальные переменные и так далее. Также имейте в виду, что site.php
будет выполняться при каждом запросе — не делайте в нем ничего тяжелого, иначе это повлияет на производительность всего вашего приложения.
Других решений пока нет …