【问题标题】:Symfony 4, get .env parameter from a controller, is it possible and how?Symfony 4,从控制器获取 .env 参数,是否可能以及如何?
【发布时间】:2019-02-08 15:08:21
【问题描述】:

从 symfony 4 开始,我想创建一个全局参数并从控制器中获取该参数的值。

此参数是服务器中另一个应用程序的路径。所以,我想在 .env 文件中添加参数。但是如何从控制器中获取这个参数的值呢?

【问题讨论】:

    标签: php symfony symfony4


    【解决方案1】:

    对于 Symfony 5

    在您的.env 文件中

    APP_PARAM=paramvaluehere
    

    在你的config/services.yaml

    parameters:
        app.paramname: '%env(APP_PARAM)%'
    

    在你的控制器中

    $this->getParameter('app.paramname');
    

    【讨论】:

    • 也适用于 4.3。
    • 你可以简单地做$_SERVER['APP_PARAM']的值只在.env文件symfony.com/doc/current/cloud/cookbooks/…
    • 要能够调用$this->getParameter('app.paramname'),请确保您的控制器extends AbstractController
    【解决方案2】:

    如果有人仍在寻找快速解决方案但没有太多 symfonish,

    在 .env 中定义你的参数

    MY_PARAM='my param value'
    

    然后在控制器中调用它

    echo $_ENV['MY_PARAM'];
    

    如果你在控制器中调用变量,你最好在parameters 部分下的config/services.yaml 中定义它,并通过parameterBag 访问它,这是非常symfonish 的方式。

    【讨论】:

    • 我相信这是从 symfony 4.3+ 开始的默认方式!在 5.2 中工作
    【解决方案3】:

    您是否尝试过:

    $this->getParameter('your parameter');
    

    编辑:

    这可能会对你有所帮助 -> https://symfony.com/doc/current/components/dotenv.html

    【讨论】:

    • 感谢您的回答 :) 我在 .env 文件中添加了参数 foo (foo=faa),我清除了缓存,但我得到一个“InvalidArgumentException:必须定义参数 'foo'”在我的控制器中:/
    • 编辑了我的答案
    • 是的,我刚刚看到了!很好奇,我认为这是 Symfony 中的原生方法!
    • 我对 Symfony 不是很熟悉,Symfony 4 中可能有原生方法。
    【解决方案4】:

    在用户 getParameter() 之前,您必须在 services.yaml 中添加它

    parameters:
        your_parameter: '%env(your_parameter)%' # from .env file
    

    【讨论】:

      【解决方案5】:
      1. 在配置参数中添加变量:
          parameters:
              your_variable: '%env(YOUR_ENV_VARIABLE)%'
      
      1. 从控制器中获取它
          $var = $this->getParameter('your_variable');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多