在Synfony config env()帮助程序中使用resolve运算符

时间:2018-01-26 10:53:58

标签: php symfony symfony4

This文章介绍了类型转换和一些方便的运算符,它们可以在Symfony配置中的env()助手中使用。除resolve:运算符外,一切都很清楚。文章说:

  

resolve:运算符用其值替换容器参数名称:

我将得到的参数名称取自env变量的值?有什么意义?

它在doctrine bundle的配置中使用,例如:

dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: '5.7'
    charset: utf8mb4

    # With Symfony 3.3, remove the `resolve:` prefix
    url: '%env(resolve:DATABASE_URL)%'

我在谷歌搜索这个问题,但在互联网上几乎没有任何信息,它也没有向我澄清任何内容。

2 个答案:

答案 0 :(得分:3)

这很简单。在您的示例中,您有:

<div class="courses-search-result standout-box-shadow <?php echo implode(' ', $classes); ?>">

如果DATABASE_URL值本身包含任何容器参数,例如Romain示例:

url: '%env(resolve:DATABASE_URL)%'

由于DATABASE_URL包含%kernel.project_dir%参数,该参数将成为项目的根目录。

通过使用resolve,您可以将此%kernel.project_dir%参数替换为其值。

没有解析网址的将是:

parameters:
    env(DATABASE_URL): 'sqlite://%kernel.project_dir%/var/data.db'
    db_dsn: '%env(resolve:DB)%'

带有解析(示例)的网址将是:

url: 'sqlite://%kernel.project_dir%/var/data.db'

答案 1 :(得分:0)

DATABASE_URL的实际价值是什么以及预期结果是什么?

来自documentation的示例:

parameters:
    project_dir: '/foo/bar'
    env(DB): 'sqlite://%%project_dir%%/var/data.db'
    db_dsn: '%env(resolve:DB)%'