2012-05-22 5 views
3

Symfony2 번들 내의 모든 페이지에서 데이터베이스 쿼리를 실행하려면 어떻게해야합니까?Symfony 2 : 글로벌 데이터베이스 쿼리

누가 온라인 기능을 만들려고 시도하지만 전 세계적으로 쿼리를 실행해야합니다.

감사합니다. :)

답변

1

흥미로운 질문입니다.

보기 (아마 레이아웃) 안에 필요하면 나뭇 가지 도우미를 만드는 것이 좋습니다. 도우미 클래스에서 Doctrine에 액세스 할 수 있습니다. 이 링크를 확인하십시오

{% render "EUPaNdataBundle:Home:listAllInstitutes" %}

: 내 layout.html.twig에 당신은 서브 템플릿을 렌더링 할 수

http://www.kiwwito.com/article/extending-twig-in-symfony-2-add-custom-functions

+0

트릭을해야합니다! :) 고맙습니다. –

2

, 예를 들어 (광산의 프로젝트를) 나는이 있습니다 그러면 상단 탐색 줄의 드롭 다운 메뉴에 모든 연구소 목록이 렌더링됩니다.

listAllInstitutes

는 DB에서 기관의 목록을 가져옵니다 Home 컨트롤러에서 작업하고 다음 listAllInstitutes.html.twig 템플릿

+1

하위 요청은 성능 측면에서 매우 비쌉니다. –

+0

어떻게 그렇게됩니까? 하위 요청을하지 않습니다. HTTP를 통해 다른 페이지를 호출하지 않습니다. 그것은 단지 그것을 포함하고 있습니다. 그리고 성능 측면에서 아무런 문제가 없습니다. 어쨌든 문제가 생기면 캐시 할 수 있습니다 ... 하위 템플릿을 사용하지 않는다면 레이아웃에서 연구소 목록을 어떻게 렌더링 할 수 있습니까? – Flukey

+0

'include'는 다른 템플릿을 렌더링하는 반면,'render'는 하위 요청을합니다. 별도의 데이터베이스 쿼리를 수행해야하는 무언가를 렌더링해야 할 때 Twig 확장을 작성합니다. –

2

kernel.request 이벤트를 수신하고있는 경우 현재 사용자의 마지막 볼 시간을 업데이트 이벤트 리스너를 작성 반환 그녀는 로그인했습니다. 청취자의 예는 my another answer을 참조하고 청취자를 필요에 맞게 조정하십시오.