EasyAdmin 添加自定义 Web 资产

Posted

技术标签:

【中文标题】EasyAdmin 添加自定义 Web 资产【英文标题】:EasyAdmin Adding Custom Web Assets 【发布时间】:2019-08-03 03:53:47 【问题描述】:

我正在尝试为我的项目添加谷歌地图搜索功能,我为此找到了一个非常好的反应代码 (https://github.com/ubilabs/react-geosuggest),但我无法将它添加到我的管理面板。 问题是我无法将自定义 javascript 文件添加到 easyadmin。 在文档中它说我们可以添加自定义网络资产,如下所示

- '/bundles/user/js/admin4.js'
- 'bundles/app/js/admin5.js'

但我不明白应该将我的自定义 javascript 文件放在哪个文件夹中。在 easyadminbundle 示例中,有一个自定义 demo.css 位于 /src/Resources/public/stylesheets 文件夹下;我尝试了类似的方法,但没有成功。

然后我尝试使用 webpack encore 添加此自定义 javascript 文件,但随后我看到我的 webpack 资产未在 easyadmin 中加载。

所以我被卡住了,我希望你能帮助我了解如何添加我的自定义 javascript。

【问题讨论】:

【参考方案1】:

在特定页面中添加自定义网络资产

根据documentation:

添加模板选项(全局或仅对某些实体)以定义用于渲染界面各个部分的 Twig 模板的路径

# config/packages/easy_admin.yaml
easy_admin:
    design:
        # these custom templates are applied to all entities
        templates:
            edit: 'admin/custom_edit_form.html.twig'
    entities:
        Customer:
            # ...
            # these custom templates are only applied to this entity and
            # they override any global template defined in 'design.templates'
            templates:
                edit: 'admin/customer/edit.html.twig'
                new: 'admin/customizations/customer_new.html.twig'

这些文件位于templates 文件夹中。

然后扩展easyadmin的默认模板:

# templates/admin/new.html.twig #
% extends '@EasyAdmin/default/new.html.twig' %

% block head_custom_stylesheets %
    # ... customize the stylesheets with webpack-encore or rel element #

% block body_custom_javascript %
    # ... customize the javascripts with webpack-encore or script ... #
% endblock %

在那里,您可以像在模板的其余部分中一样访问所有内容(例如,使用全局 twig 变量)

【讨论】:

其实我几个月前就找到了这个问题的解决方案,但忘记在这里发布了。这篇文章让我想起了这个问题。让我检查一下我的解决方案并与您的答案进行比较。

以上是关于EasyAdmin 添加自定义 Web 资产的主要内容,如果未能解决你的问题,请参考以下文章

EasyAdmin:字段的自定义类型

自定义嵌套表单类型 easyadmin

easyadmin 实体字段的动态自定义选择

在 Pentaho 中添加自定义标题

使用 SpriteKit 的自定义框架 - 未加载资产文件

如何在自定义帖子类型永久链接中添加自定义分类?