sko*_*oft 22 symfony symfony-sonata symfony-2.1 sonata-admin
我需要从config.yml解析一些配置参数,例如启用的语言.但是当我尝试使用普通的symfony方法时:$this->container->get('my_params');它失败了,因为我的管理类扩展了Sonata\AdminBundle\Admin\Admin类而不扩展Symfony\Component\DependencyInjection\ContainerAware类.
请问,如何在奏鸣曲Admin类中获取容器?
现在我通过重写奏鸣曲管理类来解决这个问题,使其扩展ContainerAware.
小智 50
可能已经解决了,因为它是一个老问题,但仅供参考,容器已在管理类中使用配置池...
$this->getConfigurationPool()->getContainer();
当然,最好在admin类中注入服务,但是,就像在控制器中一样.为什么有人,如果已经有容器可用,请花时间配置setter注入?
Мак*_*тов 14
添加您的Admin类
/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
private $container;
public function setContainer (\Symfony\Component\DependencyInjection\ContainerInterface $container) {
    $this->container = $container;
}
并在服务配置中添加调用(可以在YAML,XML或PHP中指定配置):
YAML
calls:
    - [ setContainer, [ @service_container ] ]
XML
 <call method="setContainer">
     <argument type="service" id="service_container" />
 </call>
现在您可以使用正常的symfony方法: $this->container->get()
有关更多信息,请参阅Service Container文档
| 归档时间: | 
 | 
| 查看次数: | 19712 次 | 
| 最近记录: |