php 在EasyAdmin中添加一个全局操作,将我的按钮放在表格下方而不是上方

ssm49v7z  于 2023-01-19  发布在  PHP
关注(0)|答案(1)|浏览(236)

我创建了一个全局操作:

public function export(
        Admin $user,
        StructureRepository $structureRepository,
        ExportCsvEntity $exportCsvEntity,
        string $entityClass
    ): HttpFoundationResponse {
        $zipcodes = $structureRepository->getZipcodesByStructureFromAdmin($user->getId());

        $exportCsvEntity->export(
            $zipcodes,
            $entityClass
        );

        return $exportCsvEntity->download($entityClass);
    }

    public function exportButton(): Action
    {
        return Action::new('export', 'admin.crud.user.field.activities_tracking.button.export')
            ->linkToCrudAction('export')
            ->displayAsLink()
            ->setCssClass('btn btn-primary')
            ->createAsGlobalAction()
        ;
    }

在我的积垢控制器中,我称之为:

if ($this->getUser() instanceof Admin) {
            $export = $this->exportAction->exportButton();

            $actions->add(Crud::PAGE_INDEX, $export);
          
        }

在文档中,它写为=〉Global actions are displayed above the listed entries.,但在我的示例中,按钮位于表Have a look here下方
我的模板正在扩展'@!EasyAdmin/crud/index.html.twig',然后我覆盖了 global_actions 块:

{% block global_actions %}
     {{ parent() }}
{% endblock global_actions %}

现在我的按钮在table上方,但也在table下方:Have a look here
我做错了什么?

q8l4jmvw

q8l4jmvw1#

尝试通过重写索引模板来实现此目的是正确的。
考虑到模板是如何组织的,一个简单的方法就是修改global_actions块,过滤掉你不想在列表上面显示的动作,例如,使用css类来在列表上面显示全局动作。

{% block global_actions %}
    <div class="global-actions">
        {% for action in global_actions|filter(a => 'under-list' not in a.cssClass) %}
            {{ include(action.templatePath, { action: action }, with_context = false) }}
        {% endfor %}
    </div>
{% endblock global_actions %}

在你的控制器里:

Action::new('customAction', $label, $icon)
    ->addCssClass('under-list')
    ->createAsGlobalAction()
    ->linkToCrudAction('customAction');

您需要通过覆盖main块将新的操作列表添加到您的列表下。

{% block main %}
    {{ parent() }}
    {% block under_list_global_actions %}
        <div class="under-list-global-actions">
            {% for action in global_actions|filter(a => 'under-list' in a.cssClass) %}
                {{ include(action.templatePath, { action: action }, with_context = false) }}
            {% endfor %}
        </div>
    {% endblock under_list_global_actions %}
{% endblock main %}

而且你应该在你的列表下得到你的自定义全局操作(带有css类under-list)。

相关问题