首页 > 解决方案 > Symfony Easyadmin - 如何在自定义操作上打开模式

问题描述

我正在尝试使用“路线”类型创建自定义操作。但我想在发出请求之前显示一个确认模式。例如,在列表视图中,我想要执行以下操作:编辑、查看和发布。但是当用户按下发布时,我想要一个确认模式。

删除操作已经发生此行为,但我似乎无法理解如何将其复制到自定义操作。

我怎样才能做到这一点?


更新

我已经尝试了答案中的建议,但仍然遇到问题。

我正在尝试在 EasyAdmin 中添加自定义操作,但在进入控制器之前,我需要一个模式来要求确认。它进入模态,但单击后,它什么也不做。它适用于“window.confirm”,但我似乎无法使用引导模式复制此行为。这是我设置操作的 yaml:

- {
     name: 'import',
     label: 'import',
     type: 'route',
     css_class: 'btn btn-secondary',
   }

这是模态和jquery的代码:

{% extends '@!EasyAdmin/default/list.html.twig' %}

{% block main %}

   {{parent()}}

   {% block import_action %}

    <div id="modal-import" class="modal fade">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-body">
                    <h4>{{ 'import_modal.title'|trans(_trans_parameters, 'messages') }}</h4>
                    <p>{{ 'import_modal.content'|trans(_trans_parameters, 'messages') }}</p>
                </div>
                <div class="modal-footer">
                    <button type="button" data-dismiss="modal" class="btn btn-secondary">
                        <span class="btn-label">{{ 'action.cancel'|trans(_trans_parameters, 'messages') }}</span>
                    </button>

                    <button type="button" data-dismiss="modal" id="modal-delete-button" class="btn btn-secondary">
                        <span class="btn-label">{{ 'action.continue'|trans(_trans_parameters, 'messages') }}</span>
                    </button>

                </div>
            </div>
        </div>
    </div>

{% endblock import_action %}

{% endblock %}

{% block body_javascript %}

{{ parent() }}

<script type="text/javascript">

    $('.action-import').on('click', function(e) {
            e.preventDefault();

            $('#modal-import').modal({ backdrop: true, keyboard: true })
                .on('click', '#modal-import-button', function () {
                    let importForm = $('.action-import');
                    importForm.attr('action');
                    $('.action-import').triggerHandler('click');

                });

        });

</script>

{% endblock body_javascript %}

停止事件,然后preventDefault()即使我强制重定向到路由,它也可以工作,但请求没有必要的参数。

标签: symfony4easyadmin

解决方案


在你的树枝中做一个模态,然后在 javascript 中检查答案是什么,然后再去或不去新路线。


推荐阅读