如何在 SilverStripe 4 中通过 Model Admin 发布页面?

How to publish pages via Model Admin in SilverStripe 4?

我已经创建了下面给出的页面、数据对象和模型管理。

页数

class MyPage extends Page {

  private static $db = [];
  private static $singular_name = "My Page";
  private static $plural_name = "My Pages";
  private static $description = 'A page created for testing';
}

数据对象

use SilverStripe\ORM\DataObject;

class MyDataObject extends DataObject {

  private static $db = [
    'Test' => 'Int'
  ];
}

模型管理员

<?php

use SilverStripe\Admin\ModelAdmin;

class MyAdmin extends ModelAdmin  {

    private static $managed_models = [
        'MyPage',
        'MyDataObject'
    ];

    private static $url_segment = 'my-pages';
    private static $menu_title = 'My Page Admin';
}

当我创建一个新的 "MyDataObject" 时,它会在我单击保存按钮时创建并发布对象。但是当我创建一个 "MyPage" 时,它在单击保存按钮后仍然是一个草稿。我必须从页面树打开页面并点击发布按钮发布页面。

页面默认有版本控制,数据对象没有。

https://docs.silverstripe.org/en/4/developer_guides/model/versioning/

您必须更改页面代码,如下所示。 (只需添加这一行 - 私人静态 $versioned_gridfield_extensions = true; )

<?php

class MyPage extends Page {

  private static $versioned_gridfield_extensions = true;

  private static $db = [];
  private static $singular_name = "My Page";
  private static $plural_name = "My Pages";
  private static $description = 'A page created for testing';

}