suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie frage ich Daten in Symfony2 layout.html.twig ab und zeige sie an?

Wenn es in der Datei „layout.html.twig“ öffentliche Teile wie die Seitenleiste gibt, die abgefragt und angezeigt werden müssen, wie geht das am besten?

过去多啦不再A梦过去多啦不再A梦2791 Tage vor656

Antworte allen(2)Ich werde antworten

  • phpcn_u1582

    phpcn_u15822017-05-16 16:48:16

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

    Antwort
    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

    Antwort
    0
  • StornierenAntwort