【问题标题】:Symfony 2 - path to templateSymfony 2 - 模板路径
【发布时间】:2014-10-16 09:15:33
【问题描述】:

我不知道为什么我的模板路径不起作用。我听说一切正常,应该可以正常工作,但事实并非如此。

..\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] app.WARNING:尝试为字段“photo”加载模板“ApplicationSonataAdminBundle:CRUD:list_image.html.twig”时发生错误,默认模板“SonataAdminBundle” :CRUD:base_list_field.html.twig" 被使用:"无法找到模板 "ApplicationSonataAdminBundle:CRUD:list_image.html.twig"。"。 [] []

对我来说这条路没问题。我不知道为什么这不起作用。

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

请帮忙!

【问题讨论】:

  • 您是否清除了应用缓存?
  • 是的,先生:(我做了很多次:P
  • 也许您需要使用Application/SonataAdminBundle:CRUD:list_image.html.twig?为什么要使用很长的名称和复杂的目录结构?
  • 不,它不起作用。推荐使用这种目录,因为我覆盖了第三部分包的一部分
  • 你在app/AppKernel.php注册ApplicationSonataAdminBundle了吗?

标签: php symfony templates sonata-admin


【解决方案1】:

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

首先,定义新文件:ApplicationSonataAdminBundle.php in ..\project\src\Application\Sonata\AdminBundle\

然后在文件中:

namespace Application\Sonata\AdminBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;


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

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

new Application\Sonata\AdminBundle\ApplicationSonataAdminBundle(),

感谢大家的帖子和帮助!

【讨论】:

    【解决方案2】:

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

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

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

    看看Symfony's best practices

    【讨论】:

    • 我晚上看看这个。
    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2012-12-14
    • 2013-06-17
    相关资源
    最近更新 更多