0

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

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”时,它会在我单击保存按钮时创建并发布对象。但是当我创建一个“我的页面”时,点击保存按钮后它仍然是一个草稿。我必须从 Pages Tree 打开页面并点击 Publish 按钮来发布页面。

4

2 回答 2

2

您必须更改页面的代码,如下所示。(只需添加这一行 - private static $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';

}
于 2018-03-07T02:37:42.213 回答
2

默认情况下,页面是版本化的,数据对象不是。

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

于 2018-03-07T02:04:26.387 回答