【问题标题】:EasyAdmin Using your Own Templates ProblemEasyAdmin 使用您自己的模板问题
【发布时间】: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 文件。但是当我按照你说的那样尝试时,它起作用了。

标签: symfony twig symfony4 easyadmin


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 2011-02-10
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 2011-11-09
      • 2012-03-25
      相关资源
      最近更新 更多