Php 如何通过编程向Silverstripe添加新页面?
我正在尝试使用调用外部API的后台进程将页面添加到Silverstripe站点树 我只是想让代码正确地创建一个新的程序页面。目前我有:Php 如何通过编程向Silverstripe添加新页面?,php,silverstripe,Php,Silverstripe,我正在尝试使用调用外部API的后台进程将页面添加到Silverstripe站点树 我只是想让代码正确地创建一个新的程序页面。目前我有: $mySiteTree = new SiteTree(); $mySiteTree->ClassName = "Programme"; $mySiteTree->URLSegment = $newurl; $mySiteTree->URLSegment = 'testurl'; $mySiteTree->Title = 'testing
$mySiteTree = new SiteTree();
$mySiteTree->ClassName = "Programme";
$mySiteTree->URLSegment = $newurl;
$mySiteTree->URLSegment = 'testurl';
$mySiteTree->Title = 'testing title';
$mySiteTree->ShowInMenus = '1';
$mySiteTree->ParentID = '86';
$mySiteTree->write();
这似乎没有创建任何页面。关于我做错了什么或者我可以试着做些什么来调试这个问题,有什么建议吗?看看CMS单元测试。它们是如何以编程方式创建页面和其他记录的极好示例 您的代码中缺少了一些东西,还有一些东西需要修复:
- 创建新页面时,请调用
而不是new program()
new SiteTree()
- 您不应该设置
,上面的更改将 处理好这件事类名
- 无需设置
。Silverstripe将根据您设置的标题自动执行此操作URLSEMENT
- 确保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();
几天前刚刚有人问了一个类似的问题,可能是重复的。请结帐-我建议这是作为重复关闭SiteTree,应该是页面。一个好的参考是内置的默认记录。。确保您首先将当前阶段更改为“阶段”。调用
$mySiteTree->write()代码>也将编写为Live。