详解thinkphp控制器

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 class IndexController extends Controller{
 5     //前置操作方法
 6     public function _before_index(){
 7         echo 'before<br/>';
 8     }
 9     public function index(){
10         echo 'index<br/>';
11     }
12     //后置操作方法
13     public function _after_index(){
14         echo 'after<br/>';
15     }
16 }
17 ?>

I(‘get.’);  //获取有的GET变量,注意get前面来只

URL不分轻重缓急写:

 

//重定向到New模块的Category操作,重定向到New模块Category操作,数组传参数,在眼前页面停留五分钟

 I函数还扶助参数类型转换:

 

 1 <?php
 2 class UserController extends Controller
 3 {
 4     public function update(){
 5         if(IS_POST){
 6             $User = M('User');
 7             $User->create();
 8             $User->save();
 9             $this->success('保存完成'); }
10             else{
11                 $this->error('非法请求');
12             }
13     }
14 }
15 ?>

带来伪静态后缀:U(‘Blog/cate’,’cate_id=1&status=1′,’xml’)

图片 1

图片 2

 1 <?php
 2 namespace Home\Event;
 3 class UserEvent {
 4     public function login(){
 5         echo 'login event';
 6     }
 7     public function logout(){
 8         echo 'logout event';
 9     }
10 }
11 ?>

再也议URL参数绑定:

比方设置:’URL_HTML_SUFFIX’=>’html’

‘URL_CASE_INSENSITIVE’ =>true

 下边这种艺术ajax重回的数目是xml格式。

这种情景下访http://123.56.183.226/index.php/Home/search/detail/3329061.html会出错。

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 class CityController extends Controller{
 5     public function _empty($name){
 6         //把所有城市的操作解析到city方法
 7         $this->city($name);
 8     } //注意 city方法 本身是 protected 方法
 9     protected function city($name){
10         //和$name这个城市相关的处理
11         echo '当前城市' . $name;
12     }
13 }
14 ?>

以形式举例:

跟空操作类似,那里就受出示例代码:

图片 3

$this->redirect(‘New/category’, array(‘cate_id’ => 2), 5,
‘页面跳转中…’)

U(‘地址表明式’,[‘参数’],[‘伪静态后缀’],[‘呈现域名’])

U(‘Blog/cate’,array(‘cate_id’=>1,’status’=>1))

支撑多伪静态,之间为此|分割:’URL_HTML_SUFFIX’=>’html|pdf’

 

 

//默认错误跳反对应的沙盘文件
‘TMPL_ACTION_ERROR’ => THINK_PATH . ‘Tpl/dispatch_jump.tpl’,
//默认成功跳转对应的模板文件
‘TMPL_ACTION_SUCCESS’ => THINK_PATH . ‘Tpl/dispatch_jump.tpl’

大多重叠控制器:

如此那般,原来的访链接:

唯有以拖欠配置起为1的时候,函数才碰面挨个由URL中读入参数值。

插件控制器:

 

display get show fetch theme assign error success

echo I(‘path.1’); // 输出2013
echo I(‘path.2’); // 输出06
echo I(‘path.3’); // 输出01

I(‘get.id/d’); // 强制变量转换为整型

但是如此绑定需要在部署文件被布置如下配置起:

事先曾经介绍了URL的参数绑定方案,就是通过措施/参数A/A值/参数B/B值……的计。

注意事项如下:
1.
倘若手上底操作并没概念操作方法,而是间接渲染模板文件,那么一旦定义了坐和后置方法吧,仍旧会立竿见影。真正发出模板输出的可能不过是当前之操作,松开和后置操作一般情形是没有外输出的

 U(‘Blog/cate/cate_id/1/status/1’)

‘CONTROLLER_LEVEL’ => 2

 

Controler前置方法以及后置方法:

redirect(‘/New/category/cate_id/2’, 5, ‘页面跳转中…’)

  1. 要小心的是,在多少措施中用了exit或者不当输出等等的语句
    有或无会师重复实践后置方法了。例如,设若当脚下操作中调用了决定器类的error方法,那么将未会师又举办后置操作,可是非影响success方法的后置方法执行。

默认的数量再次来到格式为是足以经过安排文件设置的:

 

I(‘get.name’,”,”);
I(‘get.id’,”,false);

地点表达式:[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2…

页面跳转:

$this->ajaxReturn($data,’xml’);

地点URL在前边的URL规则中调用的是Home下边的Index控制器的index方法,在操作绑定到近似的编程规范中,也得以是调用Home上边的控制器下边的Index目录下面的index.class.php中之run方法:

事件控制器代码举例:

index.class.php示例如下:

取缔利用系统保留函数:

 

名目繁多控制器:

http://serverName/index.php/Home/beijing/ 由于系统遭到绝非beijing这多少个控制器,所以会丢掉入空控制器。

图片 4

$data[‘status’] = 1;
$data[‘content’] = ‘content’;
$this->ajaxReturn($data);
又,你得装Ajax的多寡再次来到格式:

以PATHINFO格局下,可以按如下方法取得变量:

echo I(‘get.name’,”,’htmlspecialchars’);
 //采用htmlspecialchars方法对$_GET[‘name’]
举办过滤,假使无在则回空字符串

诸如此类是为着兼容Think PHP编程规范与Linux环境(区分轻重缓急写)。

变量顺序绑定的措施时独自针对PATHINFO地址有效。

‘URL_PARAMS_BIND’ => false

 图片 5

success和error方法的第一独参数表示提醒信息,第二个参数表示跳转地址,第三单参数是跳转时间。

 

页面重定向:

 

‘URL_DENY_SUFFIX’ =>’html’

安操作函数的后缀:

于操作绑定到接近吃,咱们啊堪只用前边介绍了之停放函数、后置函数、空操作和空控制器。只需要把前的平整对应改呢操作绑定到接近的条条框框。

U函数会自动识别当前之URL形式转变特定的URL,包括常见情势、PATHINFO情势等。

请求类型:

过滤规则可装为多单:

图片 6

可修改为:

http://serverName/index.php/New/2013/06/01

$data[‘content’] = ‘content’;

echo I(‘get.name’); // 相当于 $_GET[‘name’]

相同的,你可以经过此外一个参数设置禁用的伪静态后缀:

‘ACTION_SUFFIX’ => ‘Action’    // 操作方法后缀

 

 

 1 $User = M('User'); //实例化User对象
 2 $result = $User->add($data);
 3 if($result){
 4 //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
 5 $this->success('新增成功', '/User/index');
 6 } else {
 7 //错误页面的默认跳转页面是返回前一页,通常不需要设置
 8 $this->error('新增失败');
 9 }
10  
11 //操作完成3秒后跳转到 /Article/index
12 $this->success('操作完成','/Article/index',3);
13 //操作失败5秒后跳转到 /Article/error
14 $this->error('操作失败','/Article/error',5);
 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 class EmptyController extends Controller{
 5     public function index(){
 6         //根据当前控制器名来判断要执行那个城市的操作
 7         $cityName = CONTROLLER_NAME;
 8         $this->city($cityName);
 9     }//注意 city方法 本身是 protected 方法
10     protected function city($name){
11         //和$name这个城市相关的处理
12         echo '当前城市' . $name;
13     }
14 }
15 ?>

当介绍Think PHP
架构的早晚,我早就略的介绍过多交汇控制器的概念,即好将控制层细化为控制部分及事件处理部分。这里用更详实的指明的少数凡是,控制部分一般需连续Controler类,然而事件处理部分一般不是看的入口(输出及模板),所以不时不待继续Controler类。举例:

图片 7

心想事成该效能要配备:’ACTION_BIND_CLASS’ => True

调用规则及A函数:

 这么些参数,我们可由此正规的php函数获取,但是,Think
PHP提供了强硬的I函数,可以通用地拿到下边的各种变量:

插件控制器是此外一栽不按前边URL规则调用控制器的URL规则,需要配置文件被VAR_ADDON
参数的匹配,个人觉得,对于工程而言并非必须,反而易使项目丧失整洁性。

‘DEFAULT_FILTER’ => ‘strip_tags,htmlspecialchars’

echo  I(‘get.name’,’hello’); // 在无存在$_GET[‘name’]的当儿回来hello

URL伪静态可以还好的扶助SEO。

变量获取:

URL生成之U函数的采用:

 

1 <?php
2 namespace Home\Controller\Index;
3 use Think\Controller;
4 class index extends Controller{
5     public function run(){
6         echo '执行Index控制器的index操作';
7     }
8 }
9 ?>

http://123.56.183.226/index.php/Home/search/detail/3329061.html

地点所谓的变量过滤,实际上是得当配备文件中配备的。所以当获取变量的当儿,假设不指定过滤规则,会以默认的变量过滤方案。

 1 $User = new \Home\Controller\UserController();
 2 //实例化Admin模块的Blog控制器
 3 $Blog = new \Admin\Controller\BlogController();
 4 系统为上面的控制器实例化提供了一个快捷调用方法A,上面的代码可以简化为
 5 //假设当前模块是Home模块
 6 $User = A('User');
 7 $Blog = A('Admin/Blog');
 8 //假设当前模块是Home模块
 9 //实例化Event控制器
10 $User = A('User','Event');
11 $Blog = A('Admin/Blog','Event');

‘URL_PARAMS_BIND_TYPE’  =>  1

事先我们介绍了老大多种底页面跳反方案,包括在部署文件中跳转和以那多少个处理页面被跳转,现在我们介绍一栽新的页面跳转。这就是说即便是通过success函数和error函数。

URL伪静态:

**如果你使用了,我会杀了你!**

http://123.56.183.226/index.php/Home/search/detail/3329061

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 class IndexController extends Controller 
 5 {
 6     public function listAction(){
 7     echo 'list';
 8     } 
 9    
10     public function helloAction(){
11     echo 'hello';
12     } 
13    
14     public function testAction(){
15     echo 'test';
16     }
17 }

实质上URL参数绑定还有其余一栽方案,就是唯有传值不写参数名为。

 

 $data[‘status’] = 1;

当然为可以直接重定向到有URL,这个时节无需调用控制器的模式,只需要调用一个函数:

http://serverName/Home/Index/index

举例:

U函数协助路由于规则。

U(‘Blog/cate?cate_id=1&status=1’)

前边介绍了置函数和后置函数,现在介绍下空操作函数,举例:

若管伪静态URL_HTML_SUFFIX设置也空值,那么框架将扶助有的伪静态后缀。

URL:http://serverName/index.php/Home/City/beijing/ 
输出:当前都会beijing

I(‘get.name’)等价于:htmlspecialchars(strip_tags($_GET[‘name’]))
本来,即便设置了DEFAULT_FILTER,大家啊足以以I函数中指定过滤规则,那么些时虽然会见忽视掉配置文件。实际上,这一定给介绍架构的时光自己谈过的,动态配置

get                      获取GET参数
post                    获取POST参数
param                 自动判断请求类型获取GET、POST或者PUT参数
request               获取REQUEST 参数
put                      获取PUT 参数
session               获取 $_SESSION 参数
cookie                 获取 $_COOKIE 参数
server                 获取 $_SERVER 参数
globals                获取 $GLOBALS参数
path                    获取 PATHINFO模式的URL参数
data                    获取其他类别的参数,需要配合额外数据源参数

操作绑定到近似:

应当于安排文件中设置默认的success跳反模板与error跳反模板:

\Think\Controller 类里面含了卓绝的ajax扶助函数,你得下ajaxReturn
函数举办前后端交互:

data类型变量可以用来取不匡助的变量类型的读取。

URL_DENY_SUFFIX 的事先级比 URL_HTML_SUFFIX 要高。

空控制器:

U函数同时匡助域名与锚点,对诺操作参考下面的表明式。

假使无牵记以参数绑定,可以设置如下内容:

图片 8

空操作:

I函数的老三只变量也足以调入函数称为,这样虽然相会拔取相应之函数举行过滤。也堪运用正则表达式过滤。同时,还襄助任何有过滤规则。(email等)

系内置的请类型:

Ajax支持:

U(‘Blog/cate’,’cate_id=1&status=1′)

 

下这半种艺术,代表不使过滤规则,包括安排文件中之:

相关文章