在parameters.php中定义的Symfony 3.2参数未在PDO会话配置中定义

在parameters.php中定义的Symfony 3.2参数未在PDO会话配置中定义,symfony,session,symfony-3.2,Symfony,Session,Symfony 3.2,我使用的是symfony 3.2,我希望有一个动态数据库连接,因此我在config.yml文件中导入了一个文件parameters.php: imports: - { resource: parameters.php } - { resource: parameters.yml } - { resource: security.yml } - { resource: services.yml } 在parameters.php中,我定义了数据库名称: $cont

我使用的是symfony 3.2,我希望有一个动态数据库连接,因此我在config.yml文件中导入了一个文件parameters.php:

imports:
    - { resource: parameters.php }
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
在parameters.php中,我定义了数据库名称:

$container->setParameter('database_name', $dbName);
这在本机文件会话中可以正常工作,但当我使用pdo会话时,请遵循symfony示例:

services:
    session.handler.pdo:
        class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
        public:    false
        arguments:
           - 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%'
           - { db_username: '%database_user%', db_password: '%database_password%' }
我在编译时出错:

 [Symfony\Component\DependencyInjection\Exception\RuntimeException]
  A string value must be composed of strings and/or numbers, but found parameter "database_name" of type boolean inside string value "mysql:host=%database_host%;port=%database_port%;dbname=%database_name%".
这就像symfony不知道参数“database\u name”


有人能帮我吗?

好的,这似乎不是解决问题的办法。。。 最后,我创建了一个自定义连接工厂

use Doctrine\Bundle\DoctrineBundle\ConnectionFactory;

class MyConnectionFactory extends ConnectionFactory {

    public function createConnection(array $params, \Doctrine\DBAL\Configuration $config = null, \Doctrine\Common\EventManager $eventManager = null, array $mappingTypes = array()) {



      // Determine here params ....

        $params['dbname'] = $dbName;
        $params['host'] = $dbHost
        $params['user'] = $dbUser
        $params['password'] = $dbCode;

        return parent::createConnection($params, $config, $eventManager, $mappingTypes);
    }

这是工作

好吧,这似乎不是解决问题的方法。。。 最后,我创建了一个自定义连接工厂

use Doctrine\Bundle\DoctrineBundle\ConnectionFactory;

class MyConnectionFactory extends ConnectionFactory {

    public function createConnection(array $params, \Doctrine\DBAL\Configuration $config = null, \Doctrine\Common\EventManager $eventManager = null, array $mappingTypes = array()) {



      // Determine here params ....

        $params['dbname'] = $dbName;
        $params['host'] = $dbHost
        $params['user'] = $dbUser
        $params['password'] = $dbCode;

        return parent::createConnection($params, $config, $eventManager, $mappingTypes);
    }
这是工作