-1

컨트롤러나뭇 가지에 전역 변수를 표시하는 방법은 무엇입니까?

$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' 

어떻게 나뭇 가지에 전역 수를 표시 ?? 죄송합니다. 심포니를 처음 사용하고 나뭇 가지에 '개수'를 표시하는 방법을 모릅니다. 템플릿을 렌더링하는 동안 예외가 발생했습니다 ("AppBundle \ Controller \ countMail 클래스의 객체를 문자열로 변환 할 수 없습니다."). {{count}}을 (를) 시도했지만 오류가 발생했습니다.

답변

0

템플릿으로 반환해야하는 경우 배열로 반환하십시오. 당신이 전 세계적으로 사용이 필요한 경우 다른 경우

return ['count' => $count]; 

는, 당신은 나뭇 가지 확장, look this documentation를 사용해야합니다.

+0

같은 서비스를 사용할 수 있습니다 : 그 후 다음 작업을 수행 할 수 있습니다 –

0

@AppBundle \ Controller \ countMail - 서비스 참조입니다. 귀하의 경우에는 심포니 서비스를 만들어야합니다. - https://symfony.com/doc/current/service_container.html 그런 다음 해당 서비스를 글로벌 twig var로 참조하십시오. 다음 템플릿에서 당신 참조 서비스 에서 공개 방법 예를 들어 {{count.methodThat ReturnsSomeValue}} 각 컨트롤러 액션에 렌더러를 나뭇 가지에 아무것도 통과하지 않아도이 방법

0

예를 들어 서비스를 만들어야합니다. MailService이 있습니다. countAllMail() 방법. 이 방법으로 DB를 할 수 있습니다.

config.yml

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

그리고 당신의 나뭇 가지 템플릿에서 당신은 나뭇 가지 글로벌 VAR 아니라이

{{ my_global_mail_service.countAllMail() }}