Symfony 2-模板路径


Symfony 2 - path to template

我不知道为什么我的模板路径不起作用。我听说一切都很好,应该会起作用,但事实并非如此。

''project''src''Application''Sonata''AdminBundle''Resources''views''CRUD''list_image.html.twig

->add('photo', null, array('template' => 'ApplicationSonataAdminBundle:CRUD:list_image.html.twig'))

但当我试图解雇这个项目时,我从日志中得到了这个错误:

〔2014-10-15 10:28:59〕应用程序。警告:尝试加载字段"photo"的模板"ApplicationSonataAdminBundle:CRUD:list_image.html.twitch"时出错,使用了默认模板"SonataAdminBoule:CCRUD:base_list_field.html.titch":"找不到模板"ApplicationSonataAdminBundle:CRUD:list_iimage.html.twit".".[][]

对我来说,这条路还可以。我不知道为什么这条路不起作用。

并没有错别字,因为路径被复制了,我已经找错别字很多次了。

请帮忙!

非常感谢用户Nic。他让我找到了解决这个问题的好办法。

首先,在..中定义新文件:ApplicationSonataAdminBundle.php。。''project''src''Application''Sonata''AdminBundle''

然后在文件中:

namespace Application'Sonata'AdminBundle;
use Symfony'Component'HttpKernel'Bundle'Bundle;

class ApplicationSonataAdminBundle extends Bundle
{
    public function getParent()
    {
        return 'SonataAdminBundle';
    }
}

然后,正如尼克所说,我们需要在app/AppKernel.php中注册我们的捆绑包:

new Application'Sonata'AdminBundle'ApplicationSonataAdminBundle(),

谢谢你们的帖子和帮助!

由于目录结构非常复杂,您无法使Twig加载程序找到您的模板。

我建议您省略一些额外的文件夹,如Application或Sonata(或两者都有)。此外,用流行捆绑包的名称命名捆绑包也不是一种好方法。

要覆盖第三方捆绑包,您不需要在供应商的命名空间中有Sonata文件夹。您只需要将bundle上的getParent()设置为指向您正在覆盖的bundle。

看看Symfony的最佳实践