Symfony中每个请求的不同参数.yml


Different parameters.yml for each request in Symfony?

是否可以根据域修改每个请求的parameters.yml

我想将一个应用程序用于几个网站,这些网站仅在数据库连接和分机上有所不同。

有办法使用类似的东西parameters.php在哪里可以根据域和其他请求参数获取应用程序配置?

如何使用Symfony的缓存?

如果您使用的是教义包,这可能会对您有所帮助。

您应该首先在 parameters.yml 中定义这两个连接

database.com_driver:    'pdo_mysql'
database.com_host:      'com'
database.com_port:      'port'
database.com_name:      'com'
database.com_user:      'com'
database.com_password:  'com'
database.net_driver:    'pdo_mysql'
database.net_host:      'net'
database.net_port:      'port'
database.net_name:      'net'
database.net_user:      'net'
database.net_password:  'net'

然后,在config.yml中定义2个dbal连接和2个orm实体管理器:

doctrine:
    dbal:
        connections:
            com:
                driver:   %database.com_driver%
                host:     %database.com_host%
                port:     %database.com_port%
                dbname:   %database.com_name%
                user:     %database.com_user%
                password: %database.com_password%
            net:
                driver:   %database.net_driver%
                host:     %database.net_host%
                port:     %database.net_port%
                dbname:   %database.net_name%
                user:     %database.net_user%
                password: %database.net_password%
    orm:
            com:
                connection: com
            net:
                connection: net

然后,您需要将域传递给控制器,服务..并加载正确的实体管理器。

使用控制器的示例:

class DefaultController extends Controller
{
    public function listAction($domain) {
        switch ($domain) {
            case 'com':
            case 'net':
                break;
            default:
                //Handle error
        }
        $doctrine = $this->container->get('doctrine');
        /** @var 'Doctrine'ORM'EntityManager $entityManager */
        $entityManager = $doctrine->getManager($domain);
    }
}