我如何以编程方式将新页面添加到Silverstripe?

时间:2014-02-14 13:12:18

标签: php silverstripe

我正在尝试使用调用外部API的后台进程将页面添加到Silverstripe站点树。

我只是想让代码创建一个新的程序页面。目前我有:

$mySiteTree = new SiteTree();
$mySiteTree->ClassName = "Programme";
$mySiteTree->URLSegment = $newurl;
$mySiteTree->URLSegment = 'testurl';
$mySiteTree->Title = 'testing title';
$mySiteTree->ShowInMenus = '1';
$mySiteTree->ParentID = '86';
$mySiteTree->write();

这似乎没有创建任何页面。关于我做错了什么或者我可以尝试做什么来调试它的任何建议?

2 个答案:

答案 0 :(得分:7)

您的代码中缺少一些内容以及需要修复的一些内容:

  • 创建新页面时调用new Programme()而不是new SiteTree()
  • 您不应设置ClassName,以上更改将会 照顾这个
  • 无需设置URLSegment。 Silverstripe将根据您设置的标题
  • 自动执行此操作
  • 确保存在ID为86的页面
  • 您需要致电->publish('Stage', 'Live')->flushCache()

以下代码应该有效:

$mySiteTree = new Programme();
$mySiteTree->Title = 'testing title';
$mySiteTree->ShowInMenus = '1';
$mySiteTree->ParentID = '86';
$mySiteTree->write();
$mySiteTree->publish('Stage', 'Live');
$mySiteTree->flushCache();

答案 1 :(得分:1)

查看CMS单元测试。它们是如何以编程方式创建页面和其他记录的极好示例。 This one in particular should get you started.