URL模式:
    通过URL_MODEL参数设定URL的模式,具体包括:普通模式,PATHINFO模式,REWRITE模式和兼容模式;
    普通模式:URL_MODEL=0;
        采用传统的URL参数模式。如:http://serverName/appName/?m=module&a=action&id=1
    PATHINFOR模式:URL_MODEL=1;
        该模式为默认模式。如:http://serverName/appName/module/action/id/1/
        在不考虑路由的情况下,第一个参数被解析为模块名(如果使用分组),第二个参数解析为操作,后面的参数是显示传递的;
        参数之间的分隔符可以通过URL_PATHINFO_DEPR参数设置,默认为/;
        该模式下将把相关参数转换为GET变量;
    REWRITE模式:URL_MODEL=2;
        该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。在开启了Apache的URL_REWRITE模块后,就可以启用REWRITE模式了;
    兼容模式:URL_MODEL=3;
        兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序,还可以和URL_WRITE模式整合。兼容模式URL可以支持任何的运行环境;
        该模式其实是利用了VAR_PATHINFO参数,用普通模式的实现模拟了PATHINFO的模式。但是兼容模式并不需要自己传s变量,而是由系统自动完成URL部分;
模块和操作:
    ThinkPHP根据当前URL分析所要执行的模块和操作,由URL调度器以一下规范实现:
        http://域名/项目名/分组名/模块名/操作名/其他参数;
    模块:
        模块就是一个控制器类,通常位于项目的Lib\Action目录中。类名就是模块名加上Action后缀。Action类必须继承系统的Action基础类以 确保使用Action类内置的方法;
        每个模块的操作并非一定需要有定义操作方法,因为如果系统找不到相应的控制器方法,将自动定位到该控制器的模版目录下查找相应的模版文件;
        对于没有带模块和操作参数的URL,系统会寻找默认模块DEFAULT_MODULE和默认操作DEFAULT_ACTION。系统默认模块为Index模块,默认操作为index操作;
        如果访问一个不存在的操作或模块,并且也没有渲染到默认定位的模版文件,该情况在调试模式下会抛出异常错误,在部署模式下将发送404错误。可以通过空模块或空操作方法引导到所设置的页面;
    空操作:
        系统找不到指定的操作方法时将定位到空操作(_empty())方法来执行;
    空模块:
        系统找不到指定的模块时将定位到空模块(EmptyAction);
    分组:
        分组中的目录结构与普通模块中目录结构有所不同,APP/Common/,APP/Conf/,APP/Action/,APP/Model/,APP/Lang/,APP/Tpl/,APP/Runtime都可以进行分组操作;
前置和后置操作:
    _befor_FncNme();_after_FncNme();
    前置和后置方法中一般不定义模版输出,真正有模版输出的方法是当前方法;
    在某些方法中使用了exit()或错误输出之类的情况下有可能不再执行后置操作方法;
跨模块调用:
    new实例化模块对象:系统自动加载所有控制器类;
    A()实例化模块对象:A()支持跨分组,跨项目的调用,默认情况下调用当前项目下的模块。具体用法:A('[App://][Group/]Action');
    R()调用模块的一个方法:使用格式为:R('[App://][Group/]Action/Function',array(arg1,arg2,......));
页面跳转:
    success():设置成功后的跳转页面地址,默认的返回页面是$_SERVER['HTTP_REFERER'];
    error():错误页面的默认跳转页面是
重定向:
    redirect():参数与U()一致;
获取系统变量:
    ThinkPHP支持PHP原生系统变量,同时增强了对系统变量的支持,包括过滤和默认值设置。格式如下:
        $this->FunctionName(argName[,FunctionFilter][,defaultValue]);
        其中FUnctionName具体包括:
            _get:获取GET参数;
            _post:获取POST参数;
            _request:获取REQUEST参数;
            _put:获取PUT参数;
            _session:获取$_SESSION参数;
            _cookie:获取$_COOKIE参数;
            _server:获取$_SERVER参数;
            _globals:获取$GLOBALS参数;
        FunctionFilter:默认使用htmlspecialchars()处理;
判断请求类型:
    isGet():判断是否是GET方式提交;
    isPost():判断是否是POST方式提交;
    isPut():判断是否是PUT方式提交;
    isDelete():判断是否是DELETE方式提交;
    isHead():判断是否是HEAD提交;
    isAjax():判断是否是AJAX提交。如果使用ThinkAjax或自己写的Ajax类库的话,需要在表单里添加一个隐藏域告诉后台属于ajax提交。默认隐藏域名称是ajax,可以通过VAR_AJAX_SUBMIT配置。如果是jquery类库,无需添加隐藏域;
获取URL参数:
    一般情况下URL中的参数通过GET获取,但由于PATHINFO的特殊性,URL最终将被解析后才能转化为GET参数。
        如果对URL做了特别的定制又不想使用URL路由,可以使用框架提供的URL参数获取,格式如下:
        $_GET['_URL_'][idx];
AJAX返回:
    ThinkPHP支持任何的Ajax类库,Action类提供了ajaxReturn方法用于Ajax调用后返回数据给客户端。
        支持JSON,XML,EVAL三种数据格式返回客户端,默认为JSON,可通过DEFAULT_AJAX_RETURN进行配置。
        ThinkPHP对ajaxReturn方法返回的数据具有一定的格式约束:
            status:操作状态;
            info:提示信息;
            data:返回数据;
            对于返回数据为EVAL时,将忽略status和info信息;

posted on 2012-09-08 11:09  柳風  阅读(406)  评论(0)    收藏  举报