无法在Bundle中找到模板

时间:2018-03-05 15:34:33

标签: symfony

我正在使用Symfony 3.4.4并获取Twig_Error_Loader:

Unable to find template "MyBundle:Default:index.html.twig" (looked into: /Users/nemanja/sites/SimfoniAplikacija/app/Resources/views, /Users/nemanja/sites/SimfoniAplikacija/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form).

这是我在MyBundle / Controller中的默认控制器

<?php

namespace MyBundle\Controller;

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

class DefaultController extends Controller
{
    /**
     * @Route("/my", name="mypage")
     */
    public function indexAction()
    {
        return $this->render('MyBundle:Default:index.html.twig');
    }
}

我的索引文件就是:MyBundle/Default/index.html.twig

我尝试更改返回$this->render('MyBundle:Default:index.html.twig');  到return $this->render('MyBundle/Default/index.html.twig'); 但我仍然得到同样的错误。它无法找到索引模板。

2 个答案:

答案 0 :(得分:0)

首先,我尝试在包名称前添加@符号:

return $this->render('@MyBundle/Default/index.html.twig');

但是我得到一个错误:

There are no registered paths for namespace "MyBundle".

要找出命名空间,我运行:

bin/console debug:twig

此列出

...

 @My             - src/MyBundle/Resources/views                                                 
 @!My            - src/MyBundle/Resources/views   

...  

而不是我在控制器中添加的内容:

<?php

namespace MyBundle\Controller;

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

class DefaultController extends Controller
{
    /**
     * @Route("/my", name="mypage")
     */
    public function indexAction()
    {
        return $this->render('@My/Default/index.html.twig');
    }
}

现在它可以在指定的路径找到索引模板。

答案 1 :(得分:-1)

您的模板路径应为:

/Users/nemanja/sites/SimfoniAplikacija/app/Resources/views/index.html.twig

此致