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项目?
答案 0 :(得分:1)
在SonataAdmin中,可以从Admin配置池中获取DI容器:
<?php
use Sonata\AdminBundle\Admin\Admin;
class YourAdmin extends Admin
{
protected function yourAdminMethod()
{
$this->getConfigurationPool()->getContainer()->getParameter('your_parameter');
}
}
`
答案 1 :(得分:0)
您还可以通过管理服务定义中的setter注入参数:
services:
sonata.admin.lesson:
class: Acme\AdminBundle\Admin\LessonAdmin
tags:
- { name: sonata.admin, manager_type: orm, ...}
arguments:
- ~
- Acme\AppBundle\Entity\Lesson
- ~
calls:
- [ setItems, ["%items%"]]
在您的管理类中:
class LessonAdmin extends Admin
{
public function setItems($items)
{
$this->items = $items;
}
通过这种方式,您的参数可以在整个管理类中访问。