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;
	}
}

Post Comment