控制器中的Symfony2多个@template

时间:2013-04-18 11:40:38

标签: templates symfony controller twig

我是symfony2的新手,过去几天非常努力地想出一个问题。我的控制器是

<?php

namespace Myname\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class DefaultController extends Controller
{
    /**
     * @Route("/admin/{type}/{nav}", defaults={"nav"="nil"})
     * @Template("MyBundle::index.html.twig")
     */
    public function indexAction($type, $nav)
    {
        return array('type' => $type, 'nav' => $nav);

    }

    /**
     * @Route("/myLink/accounts", name="page_accounts")
     * @Template("MyBundle::accounts.html.twig")
     */
    public function accountsAction()
    {
        return $this->render('MyBundle::accounts.html.twig');
    }
}

但我遇到的问题是,我试图使用的链接,它使用第一个定义的模板,第二个模板永远不会呈现。但是,如果我从代码中删除第一个模板,第二个模板就完美了。任何评论都会非常棒,因为我被困了4天。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题。但是,我认为您的控制器存在一些问题以及如何使用@Template注释。

首先,如果您遵循默认约定,那么您甚至不需要指定要使用的模板。此外,在使用@Template注释时,您应该返回一个数组。

如果这些都没有帮助或相关,请您澄清一下吗?

class DefaultController extends Controller
{
    /**
     * @Route("/admin/{type}/{nav}", defaults={"nav"="nil"})
     * @Template
     */
    public function indexAction($type, $nav)
    {
        return array('type' => $type, 'nav' => $nav);

    }

    /**
     * @Route("/myLink/accounts", name="page_accounts")
     * @Template
     */
    public function accountsAction()
    {
        return array();
    }
}