如何在树枝中显示全局变量?

时间:2017-11-30 17:09:28

标签: symfony symfony-forms symfony-3.3 symfony-3.1 twig-extension

控制器

$count_em =  $this->getDoctrine()->getRepository('AppBundle:St_Jude_Email');
    $count_dql = $count_em->createQueryBuilder('c')
            ->select('count(c.flag)')
            ->where('c.flag = 0');
    $flag_count = $count_dql->getQuery();
    $count = $flag_count->getSingleScalarResult();

    return $count;

Config.yml

 Twig:
  globals:  
    count: '@AppBundle\Controller\countMail'

如何显示枝条中的全局计数? 对不起,我是symfony的新手,不知道如何显示'计数'在树枝上。 我尝试了{{count}},但得到了错误'在渲染模板期间抛出异常(" Catchable Fatal Error:类AppBundle \ Controller \ countMail的对象无法转换为字符串& #34;)'

3 个答案:

答案 0 :(得分:0)

如果您需要将其返回到模板 - 将其作为数组返回。

return ['count' => $count];

在其他情况下,如果您需要全局使用,则需要使用twig扩展名look this documentation

答案 1 :(得分:0)

@AppBundle \ Controller \ countMail - 这是一个服务参考。 在您的情况下,您需要创建一个symfony服务 - https://symfony.com/doc/current/service_container.html 然后将该服务引用为全局树枝变量。 然后在您的模板中引用服务中的任何公共方法 例如{{count.methodThat ReturnsSomeValue}}

使用这种方法,您不需要在每个控制器操作中将任何内容传递给twig渲染器

答案 2 :(得分:0)

您应该创建一个服务,例如MailService,例如一个countAllMail()方法。在这种方法中,你可以做你的数据库。之后,您可以执行以下操作:

config.yml

twig:
    globals:
        my_global_mail_service: '@AppBundle\Service\MailService'

twig模板中,您可以像这样使用您的服务

{{ my_global_mail_service.countAllMail() }}