如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?

Posted

技术标签:

【中文标题】如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?【英文标题】:How to handle the perPageOptions deprecation in Symfony 4 using the admin-bundle? 【发布时间】:2021-03-27 05:24:18 【问题描述】:

最近我将一个 3.4 的 symfony 项目更新到 4.4,我尝试清除所有新的弃用,但我找不到从管理包中更改它的方法。我扩展了

受保护的 $perPageOptions = [16, 32, 64, 128, 256];

您可以在

中找到的属性

vendor/sonata-project/admin-bundle/src/Admin/AbstractAdmin.php

并添加我的一些页面额外选项。我如何在这个新版本中做到这一点。是解决方法还是他们只是停止使用它并需要自己制作?我在任何地方都找不到关于这个主题的任何建议。

【问题讨论】:

是否有弃用消息?这里到底弃用了什么? 是的,它有一个泛型。这是文件 link 第 175 行和第 2540 行和第 3189 行中的方法 【参考方案1】:

看起来您需要重新定义 getPerPageOptions 方法,请参阅下面的 https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Admin/AbstractAdmin.php#L2550

    /**
     * Returns predefined per page options.
     *
     * @return array<string, mixed>
     */
    public function getPerPageOptions()
    
        // NEXT_MAJOR: Remove this line and uncomment the following
        return $this->perPageOptions;
//        $perPageOptions = [10, 25, 50, 100, 250];
//        $perPageOptions[] = $this->getMaxPerPage();
//
//        $perPageOptions = array_unique($perPageOptions);
//        sort($perPageOptions);
//
//        return $perPageOptions;
    

所以在您的扩展管理员中删除此行:

protected $perPageOptions = [16, 32, 64, 128, 256];

然后添加这个块:

public function getPerPageOptions()

  $perPageOptions = [16, 32, 64, 128, 256];
  $perPageOptions[] = $this->getMaxPerPage();

  $perPageOptions = array_unique($perPageOptions);
  sort($perPageOptions);

  return $perPageOptions;

【讨论】:

谢谢@ArleighHix,你是对的。而且我怀疑他们会取消注释默认值以在将来成功输出相同的输出。但是 array_unique() 仍然可以完成这项工作。

以上是关于如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 symfony 5 安装奏鸣曲管理员

Symfony2:使用 FOSUserBundle 时如何在控制器内获取用户对象?

我无法使用 symfony 5 安装 sonataAdminBundle

依赖问题作曲家[奏鸣曲管理员; SonataDoctrineORMAdminBundle]

没有为“安全”扩展配置编码器

如果不存在Mysql,则插入[重复]