Symfony应用程序中的特定于站点的配置

时间:2018-11-04 19:57:30

标签: php symfony symfony-3.4

我在Symfony 3.4中有一个应用程序,该应用程序可以在某些具有特定支持语言的不同域上使用。根据域/语言的组合,应在不同位置的应用程序中应用特定的配置。

我的问题是:如何正确应用可在不同应用程序服务中使用的配置?

这种配置的“精神”将我指向易于在Symfony应用程序中重用的参数。但是问题仍然存在-如何使它们具有动态性?

1 个答案:

答案 0 :(得分:1)

好像我找到了解决方案。您需要使用Symfony's capability to construct external parameters in PHP file

因此,首先需要将其添加到您的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%中使用

请注意,在该PHP文件中您将不会拥有所有有用的Symfony服务-仅包含裸露的PHP内部组件,全局变量等。另外请记住,site.php将在每个请求上执行-不要做任何繁琐的操作,否则会影响整个应用程序的性能。