搜尋

首頁  >  問答  >  主體

Symfony2 layout.html.twig中需要查詢資料顯示怎麼操作?

layout.html.twig中如果有公共部分例如側邊欄 需要查詢資料操作顯示出來,怎麼操作比較好啊?

过去多啦不再A梦过去多啦不再A梦2753 天前615

全部回覆(2)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-16 16:48:16

    http://symfony.cn/docs/quick_tour/the...

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 16:48:16

    兩種方法:

    一、把 layout 中需要從資料庫讀取資料的地方單獨分離一個 .twig 檔案(如 test.twig),在 layout 中使用 render Controller 方法:

    {{ render(controller('AppBundle:ControllerName:MethodName', { 'params': 3 })) }}

    在 ControllerName::MethodName 裡 render test.twig 檔案:

    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)
        ));
    }

    二、利用 KernelResponse 事件動態加入全域變數

    
    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());
    }

    只寫了核心程式碼,你還需要設定 service

    回覆
    0
  • 取消回覆