Maison  >  Article  >  développement back-end  >  THINKPHP之控制器_PHP教程

THINKPHP之控制器_PHP教程

WBOY
WBOYoriginal
2016-07-14 10:12:131038parcourir

 


如何新增控制器?

 


在Lib/Action中新增一个控制器:ProductAction.class.php:

 


class ProductAction extends Action{
   
    public function index(){
        echo 'product模块 , index方法';
    }
}

 


然后通过url访问: 这此要引入一个非常重要的一个概念:

url调度模式:就是我们在访问网站时的使用不同的ur访问方式

 


tp支持四种访问方式:可以通过URL_MODEL参数来控制。

 


1.普通模试:默认都支持


www.tp.com/index.php?m=Product&a=index&id=1

m模块名

a动作


2.pathinfo模(tp中的默认调度模式):

http://www.tp.com/index.php/Product/index/id/1/name/zhangsan

product模块名

index方法名

id是参数

1为值 。。。。。 一般都后面的参数都是成对出现的。以/分隔。

 


3. rewrite模式,即重写。 在页面静态化中用的

可以把入口文件省略掉:

http://www.tp.com/Product/index/id/1/name/zhangsan

设置方法:

 

1、httpd.conf配置文件中加载了mod_rewrite.so模块

2、AllowOverride None将None改为All  (注意不能与 #Options Indexes同时出现,否则会出现没有权限访问)


3、确保URL_MODEL设置为2

4、把下面的内容保存为.htaccess文件放到入口文件的同级目录下

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

 

 


4.兼容模式:

如果不支持web服务器不支pathinfo或rewrite模式,但我们还想使用,可以考虑用兼容模式


http://www.tp.com/index.php?s=Product/index/id/1/name/zhangsan

或者:http://www.tp.com/?s=Product/index/id/1/name/zhangsan

 

 

 


在配置文件中,一个URL_MODEL的0123分别表示。默认都支持,这是怎么回事????

 


无论什么模式都支持普通模式,在表单提交的时候就可以看出区别了。

 

 

路径分隔符:'URL_PATHINFO_DEPR'     => '-',    // PATHINFO模式下,各参数之间的分割符号

 


http://www.tp.com/?s=Product-index-id-1-name-zhangsan

 

 

 

控制器中的空操?用这个方式可以简化url,利用它的一个特点。

系统在找不到指定的方法,执行的方法。

 


在控制器内加入如下方法:

    /*
     * $name 表示请求的方法
     */
    public function _empty($name){
        echo '请求页面无法显示'.$name;
    }

 

 

 


5、 空模块

 

空模块的概念是指当系统找不到指定的模块名称的时候,系统会尝试定位空模块(EmptyAction),利用这个机制我们可以用来定制错误页面和进行URL的优化。

 

l  EmptyAction

 

       MODULE_NAME

 

我们现在尝试请求一个url

 

http://localhost/tp/index.php/Student/shanghai

 

由于我们系统中没有StudentAction这个控制器,所以会报错

 

我们在项目创建一个叫EmptyAction类,以后,如果系统找不到相应模块时,会自动定位到这个Action中,如果我们在这个类中再添加一个叫_empty的方法,这样一样,可以屏蔽所有来自url的错误

 


5、 项目分组

 

在大型项目里,一个大的项目往往是由若干个小项目组成。比如说:可能是由

前台项目、后台项目、会员博客、论坛

 

l  config.php

 

l  APP_GROUP_LIST              分组列表

l  DEFAULT_GROUP               默认分组             

 

在我们项目中,现在开始分组:

1)前台项目       Home

2)后台项目         Admin

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477233.htmlTechArticle如何新增控制器? 在Lib/Action中新增一个控制器:ProductAction.class.php: ?php class ProductAction extends Action{ public function index(){ echo product模块 , ind...
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn