Jika terdapat bahagian awam dalam layout.html.twig seperti bar sisi yang perlu disoal dan dipaparkan, apakah cara terbaik untuk melakukannya?
http://symfony.cn/docs/quick_tour/the...
Dua kaedah:
1. Asingkan fail .twig (seperti test.twig) dalam reka letak yang mana data perlu dibaca daripada pangkalan data, dan gunakan kaedah render Controller dalam reka letak:
{{ render(controller('AppBundle:ControllerName:MethodName', { 'params': 3 })) }}
Dalam ControllerName::MethodName render test.twig file:
public function MethodName($params) { $repository = $this->get('doctrine.orm.entity_manager') ->getRepository('AppBundle:EntityName'); return $this->render('AppBundle:ControllerName:test.twig', array( 'result' => $repository->findByParams($params) )); }
2 Gunakan acara KernelResponse untuk menambah pembolehubah global secara dinamik
public function __construct(ContainerInterface $container) { // container 需要通过 service.yml 注入 $this->container = $container; } public function onKernelResponse() { $twig = $this->container->get('twig'); $em = $this->container->get('doctrine.orm.entity_manager'); $repository = $em->getRepository('AppBundle:EntityName'); $twig->addGlobal('result', $repository->findByParams()); }
Hanya kod teras sahaja yang ditulis, anda juga perlu mengkonfigurasi perkhidmatan
http://symfony.cn/docs/quick_tour/the...
Dua kaedah:
1. Asingkan fail .twig (seperti test.twig) dalam reka letak yang mana data perlu dibaca daripada pangkalan data, dan gunakan kaedah render Controller dalam reka letak:
Dalam ControllerName::MethodName render test.twig file:
2 Gunakan acara KernelResponse untuk menambah pembolehubah global secara dinamik
Hanya kod teras sahaja yang ditulis, anda juga perlu mengkonfigurasi perkhidmatan