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



我正在使用symfony 3.2,我想有一个动态数据库连接,所以我在我的config.yml文件中导入了一个文件参数.php:

imports:
    - { resource: parameters.php }
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

在参数中.php我定义database_name:

$container->setParameter('database_name', $dbName);

这适用于本机文件会话,但是当我按照symfony示例使用pdo会话时:

services:
    session.handler.pdo:
        class:     SymfonyComponentHttpFoundationSessionStorageHandlerPdoSessionHandler
        public:    false
        arguments:
           - 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%'
           - { db_username: '%database_user%', db_password: '%database_password%' }

我在编译时有错误:

 [SymfonyComponentDependencyInjectionExceptionRuntimeException]
  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_name"。

谁能帮我?

好吧,这似乎不是这样做的方法......最后,我创建了一个自定义连接工厂

use DoctrineBundleDoctrineBundleConnectionFactory;
class MyConnectionFactory extends ConnectionFactory {
    public function createConnection(array $params, DoctrineDBALConfiguration $config = null, DoctrineCommonEventManager $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);
    }

这是工作!

最新更新