使用Sonata Admin Bundle在Back-office主页上显示我的实体的最佳方法是什么

时间:2015-04-27 15:03:02

标签: symfony doctrine-orm sonata-admin

我正在使用SONATA ADMIN BUNDLE做后台工作,我想知道如何在后台办公室获得不同的实体,以便在主页上获取所有不同的对象。有类似演示的内容可能非常棒:http://demo.sonata-project.org/admin/dashboard。 有其他人经历过这个并且可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

好吧,我猜你的services.yml中定义了一个服务。在该服务中,您需要获取所需的信息..

所以你需要一些教义课,但是你的服务没有这些..你可以在services.yml中注入它们,例如:

sonata.block.service.statistics:
        class: Evince\ObjectsBundle\Block\Service\StatisticsService
        tags:
            - { name: sonata.block }

        arguments:
            - ~
            - '@templating'
        calls:       
            - [ setDoctrine, ["@doctrine.orm.entity_manager"]] # <- here add the doctrine entity manager

在您的服务中,您必须实现'setDoctrine'功能:

private $doctrine;
/**
 * @param mixed $doctrine
 */
public function setDoctrine($doctrine)
{
    $this->doctrine = $doctrine;
}

getDoctrine函数:

/**
 * @return mixed
 */
public function getDoctrine()
{
    return $this->doctrine;
}

现在,当symfony在您需要时构建您的服务时,它会为您注入教义实体管理器。这称为“依赖性注入”。

在执行功能中,您可以执行以下操作:

$repo = $this->getDoctrine()->getRepository('AcmeYourBundle:YourEntityClass');
$query = $repo->createQueryBuilder()
          ->from('foo', 'f')
          ->where('foo.bar = :id')
          ->setParameter('id', $someId)
          ->getQuery();
$results = $query->getResult();
$resultCount = count($results);

//-> pass the resultCount to your template

有关如何使用学说的信息,请访问symfony网站。