Using getParameter() in admin class (not controller class)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | namespace Acme\\AdminBundle\\Admin; use Sonata\\AdminBundle\\Admin\\Admin; use Sonata\\AdminBundle\\Form\\FormMapper; use Sonata\\AdminBundle\\Datagrid\\DatagridMapper; use Sonata\\AdminBundle\\Datagrid\\ListMapper; use Sonata\\AdminBundle\\Show\\ShowMapper; use FOS\\UserBundle\\Model\\UserManagerInterface; class LessonAdmin extends Admin { public function { //I have tried these, but in vain. $items = $this->container->getParameter('items'); or $items = $this->getContainer()->getParameter('items'); |
我认为这个问题与依赖注入有关,但我仍然不清楚。
我如何在这里注入getContainer项目?
在SonataAdmin中,可以从Admin配置池中获取DI容器:
1 2 3 4 5 6 7 8 9 10 11 | <?php use Sonata\\AdminBundle\\Admin\\Admin; class YourAdmin extends Admin { protected function yourAdminMethod() { $this->getConfigurationPool()->getContainer()->getParameter('your_parameter'); } } |
`
您还可以通过管理服务定义中的setter注入参数:
1 2 3 4 5 6 7 8 9 10 11 | services: sonata.admin.lesson: class: Acme\\AdminBundle\\Admin\\LessonAdmin tags: - { name: sonata.admin, manager_type: orm, ...} arguments: - ~ - Acme\\AppBundle\\Entity\\Lesson - ~ calls: - [ setItems, ["%items%"]] |
在您的管理类中:
1 2 3 4 5 6 | class LessonAdmin extends Admin { public function setItems($items) { $this->items = $items; } |
通过这种方式,您的参数可以在整个admin类中访问。