繁体   English   中英

Symfony中每个请求的不同parameter.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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM