ProcessWire通过API创建页面
ProcessWire的API非常简单易用,下面这段代码演示了如何通过API创建一个页面?
$parentPage->get('/path/to/parent/'); //上级页面
$p = new Page(); //实例化
$p->template = "templateName"; //页面模板
$p->parent = $parentPage; //上级页面
$p->name = "pageName"; //页面名称,也就是URL路由
$p->title = "页面标题"; //为title字段赋值,页面标题
$p->body = "页面内容"; //为body字段赋值,页面内容
$p->of(false);
$p->save(); //保存页面
$p->of(true);封装成函数
/**
* 创建页面的API
* @param Page(),父页面
* @param Array(),用于构建表单的数组,需要注意的是,复合字段例如repeater/images须使用数组格式存储
* @return Page id OR Boole false
*/
function createPage(Page $parent, $form){
$p = new Page();
$p->parent = $parent;
$p->name = wire("pages")->findOne("sort=-id, limit=1, include=all")->id+1;
foreach($form as $field=>$value)
{
if(is_array($value)) continue;
$p->$field = $value;
}
$p->of(false);
$p->save();
$p->of(true);
if($p->id){
//images
foreach ($form as $field => $value) {
if(!is_array($value)) continue;
if(count($value)){
$p->of(false);
foreach ($value as $item) {
$p->$field->add($item);
}
$p->save($field);
$p->of(true);
}
}
return $p->id;
}
else
{
return false;
}
}