这可能是一个愚蠢的问题,但我无法看到如何访问这些数据:
在主app / config / config.yml中,我有我的应用程序的常规配置数据。
parameters: #accessible by getParameter()
locale: fr
# ...
fos_user: #accessible by ???
#...
registration:
form:
from_email:
address: mymail@mydomain.fr
sender_name: TheSenderName
在我的自定义捆绑包中,我可以使用以下命令访问该config.yml文件中的参数:
$this->container->getParameter('locale'); //gives me "fr" as expected
但是如何访问非参数配置值?
我想在这里获取te FOS用户包配置中定义的地址: 我无法做到
$admin_adress = $this->container->getParameter('fos_user.registration.confirmation.from_email.address');
访问thoses的正确方法是什么?
编辑: 是的我想从FOS用户包(在这个示例中,但可能是任何),控制器内或我的包中的任何内容中访问此配置数据。
答案 0 :(得分:2)
我认为this question钉了它
class MyProjectExtension extends Extension
{
public function load( array $configs, ContainerBuilder $container )
{
// The next 2 lines are pretty common to all Extension templates.
$configuration = new Configuration();
$processedConfig = $this->processConfiguration( $configuration, $configs );
// This is the KEY TO YOUR ANSWER
$container->setParameter( 'from_email.address', $processedConfig[ 'registration.confirmation.from_email.address' ];
// Other stuff like loading services.yml
}
答案 1 :(得分:0)
其中一个解决方案可以将您的控制器作为服务传递,然后注入您的参数:
# services.yml
my.amazing.controller:
class: CompanyFirst\LabBundle\Controller\PloufController
arguments:
- '@filesystem'
- '%dump_file_convention%' // your config parameter
答案 2 :(得分:0)
你可以那样行事
parameters:
locale: fr
fos_user:
registration:
form:
from_email:
address: mymail@mydomain.fr
# ...
fos_user:
#...
registration:
form:
from_email:
address: %fos_user.registration.form.from_email.address%
sender_name: TheSenderName
当然我选择这个名称只是为了满足你对参数的控制器请求:你可以(也许应该)选择其他键。
但是使用container->getParameter
,您只能访问配置文件的 parameters
部分(以及从供应商公开的参数)