在控制器中编辑config.yml文件

问题描述 投票:0回答:1

出于某些安全原因,每个客户在我的 Symfony 3.4 应用程序中都有自己的数据库 这是我的 config.yml 文件的示例:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   default
                user:     user
                password: password
                charset:  UTF8
            customer1:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   customer1
                user:     user
                password: password
                charset:  UTF8
            customer2:
                driver:   pdo_pgsql
                host:     127.0.0.1
                port:     null
                dbname:   customer2
                user:     user
                password: password
                charset:  UTF8

和 ORM :

orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        default_entity_manager: default
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                connection: default
                mappings:
                    BackBundle:  ~
                    BackBundle: ~
            customer1:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: false
                connection: customer1
                mappings:
                    BackBundle: ~
            customer2:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: false
                connection: customer2
                mappings:
                    BackBundle: ~

我可以使用

获取 config.yml 文件
$value = Yaml::parseFile('/pathtofile/app/config/config.yml');

$value 包含一个数组,但即使我使用 array_push() 结果也是不可读的

我的问题:

首先,当管理员创建新用户时,我想在doctrine中创建一个新的数据库连接,并在config.yml文件中自动创建一个新的orm配置 在我想执行

doctrine:database:create --connection=dbname
doctrine:schema:update --force --em=emname
之后 所有这些都在控制器中进行,无需手动编辑 config.yml 文件

谢谢

php symfony orm doctrine-orm
1个回答
1
投票

解决方案是用新生成的文件替换 actuel config.yml。

像这样:

use Symfony\Component\Yaml\Yaml;

$value = Yaml::parseFile('/pathtofile/app/config/config.yml');
$value["database_host"] = "10.2.2.1"

file_put_contents('/pathtofile/app/config/config.yml', $value);

文档

© www.soinside.com 2019 - 2024. All rights reserved.