是否可以根据域修改每个请求的parameters.yml
?
我想在一些网站上使用一个应用程序,它只在数据库连接和分机上有所不同。
有办法使用像parameters.php
这样的东西我可以在哪里获得基于域和其他请求参数的应用配置?
如何使用Symfony的缓存?
答案 0 :(得分:-2)
如果您使用的是教条包,这可能会对您有所帮助。
您应首先在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);
}
}