#symfony #service #twig
#symfony #Обслуживание #twig
Вопрос:
Я пытаюсь зарегистрировать (прочитайте документы) расширение Twig, и все кажется правильным, за исключением того, что оно не найдено в файле Twig.
Получаю следующую ошибку:
The function "getPostCount" does not exist in AcmeDemoBundle:Page:index.html.twig at line 17
Может кто-нибудь показать мне, что я делаю неправильно?
services.yml
acme.twig.acme_extension:
class: AcmeDemoBundleTwigPostExtension
tags:
- { name: twig. extension }
arguments:
em: "@doctrine.orm.entity_manager"
PostExtension.php
class PostExtension extends Twig_Extension
{
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function getFilters()
{
return array(
);
}
public function getFunctions()
{
return array(
'getPostCount' => new Twig_Function_Method($this,'getPostCount')
);
}
public function getPostCount($year, $month)
{
return $this->$em->getRepository('AcmeDemoBundle:Post')
->getPostCountsByMonth($year, $month);
}
public function getName()
{
return 'post_extension';
}
}
Twig
{{ getPostCount('2014', 'July') }}
Ответ №1:
В services.yml:
Удалите лишнее пространство в twig.extension.
tags:
- { name: twig.extension }