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 3:限制登录用户的数据仍然在表单下拉列表中显示其他数据