Symfony 4,从控制器获取 .env 参数,是不是可能以及如何?
Posted
技术标签:
【中文标题】Symfony 4,从控制器获取 .env 参数,是不是可能以及如何?【英文标题】: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 文件中添加参数。但是如何从控制器中获取这个参数的值呢?
【问题讨论】:
【参考方案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】:-
在配置参数中添加变量:
parameters:
your_variable: '%env(YOUR_ENV_VARIABLE)%'
-
从控制器中获取它
$var = $this->getParameter('your_variable');
【讨论】:
以上是关于Symfony 4,从控制器获取 .env 参数,是不是可能以及如何?的主要内容,如果未能解决你的问题,请参考以下文章