我创建了一个全局操作:

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()
        ;
    }

然后在我的Crud控制器中,我将其命名为:

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

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

doc中,它的书面形式=>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 %}

现在我的纽扣在桌子上方,但也在下面: Have a look here

我做错了什么?

推荐答案

当您try 通过覆盖索引模板来执行此操作时,您是正确的.

考虑到模板的组织方式,一种简单的方法是通过过滤不希望显示在列表上方的动作来修改global_actions个块.例如,通过使用一个css类来not显示列表上方的全局操作.

{% 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 %}

在您的CRUD控制器中:

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)放在您的列表下.

Php相关问答推荐

通过激活模板在数据库中创建表

将数组推送到数组时,数组推送()出现问题

如何在PHP中出现弃用警告时触发错误?

如何在Livewire 3 Form类中做依赖注入?

PHP文件上载问题-";Move_Uploaded_Files";未按预期工作

如何使用定制的StateProvider设置JsonLd@上下文?

PHP:为什么递归需要这么长时间

登录后重定向在WooCommerce中购买产品的用户

在WooCommercestore 页面上显示库存产品属性的值

PHP Match如何准确判断条件?

在 Woocommerce 邮箱订单中显示产品 GTIN

将一个表中的行连接为不同表MYSQL中的一列

无法在 Laravel 中实例化抽象类 ProductAbstract

在 php 中生成 MAC ISO/IEC 9797-1

symfony/notifier + twig/inky-extra 在 dunglas/symfony-docker 中缺少 ext-xsl.

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

正则表达式请帮我从内容中找到这个词

如何使用相同的变量使函数参数对于数组和字符串都是可选的

为什么 ECDSA 384 签名验证在 GO 中失败,但在 PHP 中却没有?

使用 GROUP_CONCAT 规范化/转置来自查询的数据