EasyAdmin 使用您自己的模板问题

Posted

技术标签:

【中文标题】EasyAdmin 使用您自己的模板问题【英文标题】:EasyAdmin Using your Own Templates Problem 【发布时间】:2019-08-04 11:50:58 【问题描述】:

我正在尝试覆盖 EasyAdmin 的“新”模板,但系统忽略了模板代码。 这是 easy_admin.yaml

的相关部分
entities:
       # List the entity class name you want to manage
      Places:
          class: App\Entity\Places
          templates:
              list: 'asdfasdf'

如您所见,列表属性的值无效,但系统会忽略它并正常工作,并且我无法覆盖模板。

你有什么建议吗?

【问题讨论】:

您能提供更多信息吗?您如何尝试覆盖它,您将新模板放在哪里? 实际上我正在放置模板、模板文件夹并尝试使用其名称进行调用,如symfony.com/doc/master/bundles/EasyAdminBundle/book/… 所述,但如您所见,上面的代码系统忽略了模板部分,所以我正在编写随机字符和它没有给出任何错误找不到此模板。 刚刚在我的项目上进行了测试。 template 中的随机字符也不会给我带来错误。但是使用正确的路径 - 它工作正常。例如,我的模板在templates/admin/dashboard.html.twig 中,list: 'admin/dashboard.html.twig' 按预期工作。 让我试试。我正在使用随机字符进行测试,因为我无法使模板正常工作,所以我认为有问题。 是的,你是对的。我找不到有关模板目录结构的足够信息,因此我将模板放在模板文件夹根目录中,并尝试通过文件夹结构调用 yaml 文件。但是当我按照你说的那样尝试时,它起作用了。 【参考方案1】:

所以,正如我在评论中提到的 - 出于某种原因,如果指定的模板不存在,easyadmin 不会给出任何错误。因此,您只需将新模板放在templates 文件夹中,例如templates/admin/listPlaces.html.twig,然后在easyadmin 的配置文件中指定正确的路径,例如:

entities:
    Places:
        class: App\Entity\Places
        templates:
             list: 'admin/listPlaces.html.twig'

【讨论】:

【参考方案2】:

如果您使用 EasyAdmin 3.x,您可以覆盖在实体的控制器中指定它的特定模板,或者您可以像 symfony 一样创建自己的文件夹结构。

在这个例子中,我只覆盖了我的“学生”实体的编辑模板,如果你想改变你项目的所有编辑,你必须像 symfony 那样创建文件夹结构。

public function configureCrud(): Crud

    return Crud::new()
       
        ->overrideTemplate('crud/edit', 'studient/edit.html.twig')
    ;

您甚至可以结合使用这两种方法。假设除了只修改 studient 的模板 'edit' 之外,您还想修改 easyadmin 显示 flash 消息 的方式,您只需要创建这个结构在您的模板文件夹中:"templates\bundles\EasyAdminBundles\flash_messages.html.twig"

我留下了 EasyAdmin 3.x 文档的链接 overriding-templates

【讨论】:

以上是关于EasyAdmin 使用您自己的模板问题的主要内容,如果未能解决你的问题,请参考以下文章

easyadmin写入无效

EasyAdmin 3:限制登录用户的数据仍然在表单下拉列表中显示其他数据

Symfony 4 EasyAdmin 如何加密密码?

类 DateTime 的 EasyAdmin 3 对象无法转换为字符串

EasyAdmin 3 日期时间选择器时间格式

php 事件日历和相关插件:添加您自己的模板文件加载位置。