【问题标题】:yii2 pagination error not showing all the data in the tablesyii2分页错误未显示表中的所有数据
【发布时间】:2017-04-13 22:14:30
【问题描述】:

对不起,我一直在寻找这个问题的答案,但还没有找到。

我们有这个项目 Yii2 和 AngularJS。问题是 Yii 只返回表中的 20 个项目。我去了供应商并创建了我修改这行的分页文件:

public $defaultPageSize = 20;
public $pageSizeLimit = [1, 50]; 

public $defaultPageSize = 0;
public $pageSizeLimit = [0, 50];

这是在表格中显示所有数据的唯一方式,但我需要在供应商文件之外的文件中执行此操作。

我该怎么做? 我需要修改哪些文件?

我已经在配置中尝试过,但它不起作用。我必须在全局范围内设置它,因为在我们显示的所有数据中我都有同样的问题。

感谢您的帮助。

【问题讨论】:

    标签: php angularjs yii pagination yii2


    【解决方案1】:

    @scaisEdge's answer 是正确的,我认为这是避免意外查询非常大的数据集的最佳方法。

    但是,您可以使用dependency injection 设置分页的初始值。在您的输入脚本中添加:

    \Yii::$container->set('yii\data\ActiveDataProvider', ['pagination' => false]);
    

    请注意,它是在数据提供者yii\data\ActiveDataProvider 而不是yii\data\Pagination 中设置的,因为在分页中设置它会影响使用分页的所有内容。

    【讨论】:

      【解决方案2】:

      最简单的方法是禁用分页...将分页设置为 false 例如:如果您正在创建一个 dataProvider,您可以

      return new ActiveDataProvider([
         'pagination' => false,
      ]); 
      

      或在与您的问题相关的模型中,您可以设置分页

      【讨论】:

      • 感谢您的回复。我不知道在哪里创建数据提供程序,因此它可以应用于应用程序中的所有表单,因为它具有 Angularjs。如何在模型中设置分页?
      • 通常情况下,activeRecord 的 dataProvider 是在 modelSearch 中创建的 ..(如果您使用 gii 为 activeRecord 创建代码脚手架)——因此您可以替换分页,为您需要的模型modelSeach的搜索功能
      • 我在模型中尝试过,但它不起作用。我怎样才能在全球范围内做到这一点?我至少有 35 个表格。是否有可能在应用程序的参数中做到这一点,如果可以的话怎么做?
      • 你有没有与这个模型相关的modelSearch?
      • @Andrs888 您不应该为此使用全局设置,您应该在所有相关的 searchModels 中找到 dataProviders 并进行此更改。这是执行此操作的默认方式,也是一种很好的做法。
      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 2018-09-08
      • 2021-06-04
      相关资源
      最近更新 更多