Rumah > Soal Jawab > teks badan
Jika terdapat bahagian awam dalam layout.html.twig seperti bar sisi yang perlu disoal dan dipaparkan, apakah cara terbaik untuk melakukannya?
世界只因有你2017-05-16 16:48:16
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