ThinkPHP基础-1

1.

    |--空操作和空模块出现:
              |--模块写错或者模块下的方法写错;(访问不存在的M和A也算是“广义上”写错了,因为它没有嘛)
              |--缺省模块和方法名,但是默认模块和方法也没有加载成功。

              // 总之一句话,这是由于URL出错,找不到任何MA造成的。

    |--而默认操作和模块出现的条件:
               |--模块或者方法没写,系统就会默认定位默认M和A
               |--但是这里有个前提:你的默认M和A要能正常加载得到。

             //这是缺省M和A造成的,但至少有DEFAULT找得到。

 
     // 但其实事实上,空模块和空操作并不简单只是给出错页面做优化那么简单,他们的结合还有更强大的功能。



2.模块分组:
        |--使原本跨平台的项目归于同一个项目下,减少操作的繁琐,加大公用文件的重复利用,同时也能对不同分组下模块做定制。

        |--比如网站的前台后台管理方式有所不同,但单独写两个项目,很繁琐,分组解决一切。

        |--注意事项:待完善.....


3.伪静态:
         |--给URL加点后缀,可能是出于安全考虑。
 
         |--方法:在配置文件里:'URL_HTML_SUFFIX'=>'.shtml'  //也支持多个,还有U方法控制伪静态。



4.URL路由:

         |--对URL进行特殊解析,或者重定向。

         |--分为规则路由和正则路由,详细用法和格式见手册。


5.URL重写:

        |--目的:减少URL,无论是安全性还是SEO都是有好处的。

        |--方法:
                 |--在apche:  *  修改httpd.conf把mod_rewrite模块注释拿掉,开启这个模块
                              *  AllowOveride None 把None修改为ON

                    在项目配置文件:URL_MODEL => 2,
                    在项目入口文件的同级目录下:新建这个文件.htaccess,内容见手册。

6.URL生成:
          |--目的:因为存在四种URL_MODULE,所以需要匹配他们,
                   而且如果项目被移植,位置变动,就必须根据实际情况下的URL动态生成URL地址。
      
          |--基于U方法,规则见手册。


7.URL大小写:
        |--前提:依据TP命名规范写好Action
        |--方法:在配置文件里,URL_CASE_INSENSITIIVE => ture,即可关闭用户在访问URL的大小写统一了。
                 UserTypeAction对于这种命名的类,采取U方法自动生成URL,或者URL_CASE_INSENSITIIVE => ture
                  才可以直接URL写usertype,否则是user-type。


8.前置操作和后置操作:
             |--模式:  _befor_haoge()
                         haoge()
                        _after_haoge()

             |--需要注意: |--即使haoge()没有定义,直接渲染haoge.html,前置后置方法依然会生效。
                           |--如果haoge()调用了error()方法或者发生错误或者调用了exit(),后置方法就失效了。


9.跨项目调用:
            |--调用模块:(Action)
                     A('User');               //默认就是调用当前项目的MODULE。
                     A('tool/User');          //这个结构就是调用当前项目的tool分组的MODULE
                     A('Admin://tool/User');  //这种结构就是调用Admin项目下的tool分组的MODULE
         
            |--调用操作: (方法)
                     R('User/info');                  //默认调用当前项目下的User类的info{这是最小结构了}
                     R('tool/User/info');             //调用当前项目下的tool分组下的info
                     R('Admin://tool/User/info');     //调用Admin项目下的tool分组下的User类的info

                     如果info()里面需要传参数,那么甚至可以这么调用info():  R('User/info', 15);


10.页面跳转:
          |--error和success函数调用:
                  $this->error('操作失败哦', url);
                  $this->success('操作成功',url);
                                     
          |-- * success如果不设置url参数,默认跳转到$_SERVER['HTTP_REFERER'],error默认跳转至前一个操作页面。

              * 这两个方法的视图模板分别在:
                                   |--默认:{使用框架文件的}
                                            //默认错误跳转对应的模板文件
                                             'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl';
                                            //默认成功跳转对应的模板文件
                                             'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl';

                                   |--也可以自定义:
                                            //默认错误跳转对应的模板文件
                                             'TMPL_ACTION_ERROR' => 'Public:error';
                                            //默认成功跳转对应的模板文件
                                             'TMPL_ACTION_SUCCESS' => 'Public:success';

                                   |--还可以进入模板文件修改参数:$msgTitle $message $status $waitSecond $jumpUrl

          |--新版TP还支持传值和ajax返回,具体见手册。


11.重定向:
      用法同U方法:
                    //重定向到New模块的Category操作
                      $this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');

                   //重定向到指定的URL地址
                      $this->redirect('/New/category/cate_id/2', 5, '页面跳转中...');


12.获取系统变量:

               |--依旧支持PHP原生的获取方法,但加强了功能:变量过滤和默认值支持,

                  使用方法:$this->方法名("变量名",["过滤方法"],["默认值"]);
                    具体见手册,很清晰:也支持关闭默认的过滤功能,或者,去配置文件修改过滤规则

                  * 还有一个智能识别获取类型的 _param

13.判断请求类型:

              if(!$this->isPost()) echo "请求不合法";
              判断ajax请求:需要认真看看手册,有几个特殊之处要注意。


14.获取URL参数,和 获取系统变量 用的函数看起来一样,其实就获取范围,还是有细微区别。

15.Ajax返回

16.Action参数绑定:在Action里写方法,把方法的参数与URL参数保持相同,那么在解析URL时,系统默认把他们绑定,利于跨项目管理。
                   另外,最好写函数时,给函数指定默认值,永远不要相信用户的输入值。

17.多层控制器支持。
posted @ 2018-03-19 20:42  hzhang_NJU  阅读(94)  评论(0编辑  收藏  举报