是否可以根据域修改每个请求的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);
}
}