【发布时间】:2016-11-09 13:22:48
【问题描述】:
对于必须始终在网站上的页面(只有 1 个,而不是更多,例如主页),我想进行扩展。该页面应该在我运行 dev/build 时创建,并且无法在 CMS 中创建、删除、取消发布或存档。不过可以编辑。
除了canCreate 函数外,一切似乎都运行良好。似乎这个函数在 CMS 上时并没有做太多(n)(数据)扩展。当我在 .../admin/pages/add 上时,我仍然可以根据需要多次创建页面。
如果我将 canCreate 移动到 HomePage 类,它确实有效。但我希望它在我的扩展中:-)
class OnePage extends DataExtension
{
public function requireDefaultRecords()
{
if($this->canCreate()) {
$page = $this->owner;
$page->Title = $this->owner->className;
$page->write();
$page->publish('Stage', 'Live');
$page->flushCache();
}
}
public function canCreate($member = null)
{
return $this->owner->get()->count() == 0;
}
public function canDeleteFromLive($member = null)
{
return false;
}
public function canArchive($member = null)
{
return false;
}
}
class HomePage extends Page
{
private static $extensions = [
'OnePage'
];
}
我这样做是正确的还是我错过了什么?
编辑
canCreate 方法效果很好,我可以这样解决;
class HomePage extends Page
{
public function canCreate($member = null)
{
return $this->get()->count() == 0;
}
}
这有预期的效果,就像一个魅力。但是,问题在于将canCreate 方法放入扩展中。这应该也行,对吧?
【问题讨论】:
标签: php silverstripe