CanPHP开发手册--模板操作

说明:
  • CP内置了一个简单高效的模板引擎,如果不能满足项目需求,请自行扩展其他第三方模板引擎,如smarty。
  • 附加说明:CP自带的模板引擎特意设计得很简单,循环,条件判断等用原生php去实现。 为什么CP的模板引擎设计要得那么简单呢? 因为现在的开源系统中,大部分都有一套自己的模板引擎,学习一个系统,又需要去重新学习一套 模板标签,大大增加了学习成本,为了减少大家学习CP的成本,故把模板引擎设计得很简单,需求复杂一点的,大家可以去使用smarty。
模板配置
说明:在config.php文件中配置
代码如下:
		//模板配置
	$config['TPL_TEMPLATE_PATH']='./template/';//模板目录
	$config['TPL_TEMPLATE_SUFFIX']='.html';//模板后缀,建议改成.php
	$config['TPL_CACHE_ON']=false;//是否开启模板缓存,true开启,false不开启
	$config['TPL_CACHE_PATH']='./data/tpl_cache/';//模板缓存目录
	$config['TPL_CACHFILE_SUFFIX']='.php';//模板缓存后缀,一般不需要修改
	//模板配置结束
	
实例化模板引擎类
说明:在公共模块commodMod.class.php的构造函数中实例化
参考代码如下:
	config=self::$global['config'];//配置
		//数据库模型初始化
		if(!isset(self::$global['model']))
		{
			//require(CP_PATH.'core/cpModel.class.php');//加载数据库模型类
			self::$global['model']=new cpModel($this->config);//实例化数据库模型类				
		}
		$this->model=self::$global['model'];//数据库模型对象
		//模板初始化
		if(!isset(self::$global['tpl']))
		{	
		  //  require(CP_PATH.'core/cpTemplate.class.php');//加载模板类
		    self::$global['tpl']=new cpTemplate($this->config);//实例化模板类		
		}
		$this->tpl=self::$global['tpl'];//模板类对象
	}
	//模板变量解析
	protected function assign($name, $value)
	{
		return $this->tpl->assign($name, $value);
	}
	//模板输出
	protected  function display($tpl='')
	{	
		return $this->tpl->display($tpl);	
	}
	?>
	
模板赋值与输出
使用方法:
	1、模板赋值
	$this->assign($name, $value);	
	/*
	如:$tpl->assign('name', $name);
	$tpl->assign('user', $user);
	$value可以是字符串,数组等任何类型
	*/			
	2、模板显示		
	$this->display($tpl);
	$this->display();
	/*
	如:$this->display('index/index');加载template/index/index.html模板
		$this->display('index');加载template/index.html模板
		$this->display();//不加参数,等价于$tpl->display(当前模块名/当前操作);
	*/
	
模板标签
说明:CP模板引擎内置的模板标签,只有变量输出和模板包含
使用方法:
	1、变量输出
	{$name}				//最后解析为
	{$user['name']}		//最后解析为
	
	2、模板包含,常用于包含公共头部,公共底部	
	{include file="模板名"}	
	//如{include file="header"}
	//注意:header模版名,目录相对于$config['TPL_TEMPLATE_PATH']='./template/'这个目录,后缀为$config['TPL_TEMPLATE_SUFFIX']='.html';设定的后缀
	
	3循环和判断等,用php原生代码实现,如
	
	{$vo['id']} {$vo['title']}
	
	
自定义模板标签
说明:CP模板引擎还可以自定义标签
使用方法:
	//在CanPHP/ext/extend.php(默认会加载,不需要手动导入)中实现下面的函数,即可完成自定义模板标签
	//需要什么标签,自己写规则替换,此函数会被自动调用
	//自定义模板标签解析函数
	function tpl_parse_ext($template)
	{
		//在这里实现的模块标签替换
		
		return $template;
	
	}