前台控制器专用基类
前台控制器
拼接有效的URL地址
参数 array $params 返回 URL地址
<?php
...
$this->gen_url(array('app'=>$app_id, 'ctl'=>$ctl,'act'=>$act,'args'=>array(($tmp = time())))),
...
对view下html页面进行编译,设置头部信息,并把生成的html。此生成的时候全页页面的main区域的html
供site_router下的dispatch方法构成全页页面使用
参数 string $view 返回 string
<?php
...
$this->page('site/member/main.html');
...
直接跳转到指定地址
参数 array $url boolean $js_jump 返回 null
<?php
...
$this->redirect(array('app'=>'b2c','ctl'=>'site_cart','act'=>'loginbuy','arg0'=>'1'));
...
begin end 或者 begin end_only函数配合使用,可对运行程序的错误信息进行处理后在进行显示
begin 错误处理开始
end 显示处理结果,显示成功或失败页面
end_only 只显示错误信息
参数
显示处理结果页面,可以用于状态提示跳转,如:是否已经登录的提示跳转
参数 string $status 'success' or 'failed' string $jumpto 跳转的URL strint $msg 显示的提示信息 返回 null 注意: $jumpto参数中有两个特殊参数 1)当$jumpto='back'时,跳转的是返回的页面 2)当$jumpto='close'时,则不进行跳转,关闭本页面
<?php
...
$url = $this->gen_url(array('app'=>'b2c','ctl'=>"site_member",'act'=>"setting"));
$this->splash('failed',$url , app::get('b2c')->_('邮件已经存在'));
...
提取html页面中的css样式
public function extract_widgets_css(&$body) 参数 string $body(html) 返回 string
生成widgets特有的前缀信息(用于缓存)
public function create_widgets_key_prefix($values, $varys) 参数 string $values string $varys widgets中widgets.php定义的$stting[varys]的信息 返回 string
设置主题模版类型,设置调用的模板页面,如果没有设置系统默认的调用模板的default.html
当在theme中添加了一个自定义的模板页面,则要使用此页面的时候,需要在page方法的前面
用此方法定义好。
final public function set_tmpl($tmpl) 参数 string $tmpl 模板页面的名字(index,default) 返回 null
读取主题模版类型,获取set_tmpl设置的值,此方法一般用不到,是系统自己调用的方法
final public function get_tmpl()
设置主题模板文件,设置页面调用的模板,不同模板样式不同(模板中的html页面:page-help.html)
如果定义的模板文件不是在theme的时候则需要用set_tmpl_file来设置页面调用的模板
final public function set_tmpl_file($tmpl_file) 参数 string $tmpl_file 模板中的页面文件(page-help.html) 返回 null
读取主题模板文件,获取set_tmpl_file定义的值,此一般是在page方法中调用了,所以一般用page来显示页面就可以了
final public function get_tmpl_file()
设置头部max-age信息,提共给page方法或其他显示页面使用
Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)
参数 int $time设置超时时间
设置Cache-control:no_cache
参数 var boolean $status
设置Cache-control:no_store
当header设置为Cache-control:no_cache,no_store是,系统则不会对此页面进行缓存
参数 var boolean $status
设置Cache-control:public(rivate)
参数 默认为pulbic
修改(替换,添加,删除)html页面的内容,修改的是对应的页面的html内容
service注册的ID为site_controller_content
<service id="site_controller_content"> <class>ecbook_service_modifyhtml</class> </service>ecbook_service_modifyhtml类的写法
<?php
class ecbook_service_modifyhtml implements site_interface_controller_content{
public function modify(&$html, &$obj){
//$html为此页面的所有的html,在此可以做完修改后进行返回就好
$arr ='xxxxxx';
$arr2.='xxxxx';
$html = str_replace($arr, $arr2,$html);
}
}
修改(替换,添加,删除)html页面的内容,修改的是指定的app的控制器的方法的页面的html内容
因为这个service是在site_controller的构造方法里面的,因此,这个service一般是在修改系统共用的一些内容
其用法和site_controller_content这个service一样,service注册类的写法所一样的,需要注意的是service ID 的写法site_controller_content.$app_name.$ctl.$act
第一个%s表示的此页面所在的app的app名字 第二个%s表示的此页面所在的调用控制器的名字 第三个%s表示的此页面所在的调用方法的名字service类的写法
modify方法:和site_controller_content service类的写法一样 boot方法:一般修改的是前台系统共用的一些配置信息,最后返回true
此service用于前台的页面劫持
使用场景:如果在一个前台控制器中使用了site_controller中page方法调用view下的html页面,
那么在需要劫持此方法中的的页面则可以使用此service
注册srevice
第一个%s表示的此页面所在的app的app名字 第二个%s表示的此页面所在的调用控制器的名字 第三个%s表示的此页面所在的调用方法的名字
<service id="site_controller_display.b2c.site_gallery.index"> <class>shangchao_ctl_site_gallery</class> </service>service类的写法
get_view方法:返回劫持后的页面 get_app_id方法: 提供劫持后的页面所在的app的名字
<?php
class shangchao_ctl_site_gallery extends site_controller{
function get_view(){
//$GLOBALS['runtime']['serach_content'] = $_GET['scontent'].'__'.$this->pagedata['args'][5];
//提供劫持页面的数据
return 'site/gallery/index.html';//返回劫持的页面
}
function get_app_id(){
return 'shangchao';
}
}
?>