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