如何在 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';
}
我已经创建了下面给出的页面、数据对象和模型管理。
页数
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';
}