在 easyadmin 中以 html 模式详细查看 TextEditorField

View TextEditorField as html in detail modal in easyadmin

提问人:Eclat 提问时间:7/19/2023 最后编辑:Eclat 更新时间:7/20/2023 访问量:176

问:

我使用EasyAdmin来管理使用Symfony 5创建的网站的后台。

我的一个实体有一个 TextEditorField 类型字段,我将其与表单的 CKEditorType 一起使用。在表单中,我可以正常进行格式设置,但是在显示板中,“查看内容”模式显示原始文本,而不是转换为HTML。

我想保留模态系统以查看更多,是否可以在此模态中看到 HTML 文本?这是我的 crud 中声明的字段

TextEditorField::new('contenu', 'Descriptif')->setFormType(CKEditorType::class)->onlyOnForms(),
TextEditorField::new('contenu', 'Descriptif')->hideOnForm(),

见表 见模态

谢谢你的帮助

我尝试使用 TextareaField 类型,因为它可以显示为 html (renderAsHtml),但我的内容太长了,我需要在弹出窗口中看到它,而不是在表格中。

文本编辑器 symfony5 easyadmin

评论


答:

0赞 Eclat 7/20/2023 #1

我终于找到了问题的答案,所以我在结束之前在这里分享。

我在捆绑包中查找了显示详细信息的模板,并通过将“nl2br”替换为“raw”来制作自定义模板。

以下是我创建的文件的路径:templates\bundles\EasyAdminBundle\crud\field\text_editor.html.twig

{# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #}
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
{% if ea.crud.currentAction == 'detail' %}
    {{ field.formattedValue|raw }}
{% else %}
    {% set html_id = 'ea-text-editor-' ~ field.uniqueId %}
    <a href="#" data-bs-toggle="modal" data-bs-target="#{{ html_id }}">
        <i class="far fa-file-alt"></i> {{ 'field.text_editor.view_content'|trans([], domain = 'EasyAdminBundle') }}
    </a>

    <div class="modal fade" id="{{ html_id }}" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">{{ field.label }}</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ 'action.close'|trans([], domain = 'EasyAdminBundle') }}">
                    </button>
                </div>
                <div class="modal-body">
                    {{ field.formattedValue|raw }}
                </div>
            </div>
        </div>
    </div>
{% endif %}

祝你今天开心!