关于php:SilverStripe 3.1删除Sortable GridField分页并显示所有DataObject

SilverStripe 3.1 remove SortableGridField pagnation and show all DataObejcts

我一直在尝试查找有关如何在SS3中删除GridField上的分页并在CMS GridField视图中显示所有(或至少更多)DataObject的信息。

我专门使用SortableGridFields进行排序。

该接口默认一次加载15个数据对象。

  • 有没有一种方法可以完全消除分页?
  • 有没有办法将上限提高到50?
  • 这是特定GridField的当前代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class ProjectPage extends Page {
    // ORM
    public static $has_many = array(
       "Media" =>"ProjectMediaObject"
    );
    // Page fields in CMS
    public function getCMSFields() {
        // add media GridField
        // config
        $config = GridFieldConfig_RecordEditor::create();
        $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(
           "Thumbnail" =>"Thumbnail",
           "hasVideo" =>"Video"
        ));
        $config->addComponent(new GridFieldBulkEditingTools());
        $config->addComponent(new GridFieldBulkImageUpload());
        $config->addComponent(new GridFieldSortableRows("SortOrder"));
        // grid
        $media = new GridField("Media","ProjectMediaObject", $this->Media(), $config);
        $fields->addFieldToTab("Root.Media", $media);
    }

    } ??

    代码运行完美,我正在寻找的是一些我似乎缺少的配置变量。否则,可能由于某种原因而无法实现...


    有以下几种选择:

    GridFieldConfig_RecordEditor接受一个用于每页项目的参数。

    1
    $config = GridFieldConfig_RecordEditor::create(50);

    或在组件上每页设置项目:

    1
    $config->getComponentByType('GridFieldPaginator')->setItemsPerPage(50);

    或删除分页(和相关组件):

    1
    2
    $config->removeComponentsByType('GridFieldPaginator');
    $config->removeComponentsByType('GridFieldPageCount');