我尝试将memcached服务注入实体存储库,但我的变体不起作用。
services:
work.repository.company:
class: WorkBundle\Repository\CompanyRepository
factory: ['@doctrine.orm.entity_manager', getRepository]
arguments:
- 'WorkBundle:Company'
calls:
- [setCacheService, ['@memcache.default']]
CompanyRepository有setter setCacheService,但它没有被调用。
class CompanyExtension extends \Twig_Extension
{
/**
* @var EntityManager
*/
private $em;
public function setEntityManager(EntityManager $entityManager)
{
$this->em = $entityManager;
}
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('getCompaniesCount', array($this, 'getCompaniesCount'))
);
}
/**
* @return integer
*/
public function getCompaniesCount()
{
return $this->em->getRepository('WorkBundle:Company')->getActiveCompaniesCount();
}
public function getName()
{
return 'work_company_extension';
}
}
为什么这段代码不起作用?
答案 0 :(得分:0)
您是否在 repositoryClass
实体中注册了WorkBundle:Company
?您的实体应包含以下内容:@ORM\Entity(repositoryClass="Work\Company")
或yaml equivalent。
你应该让Symfony通过将work.repository.company
注入你的Twig扩展来创建存储库。