您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-控制器[上]
发布时间:2017-09-19 11:38:06编辑:雪饮阅读()
配置方法后缀:
'ACTION_SUFFIX'=>'Action',
配置后访问url不变,但控制器中的方法名必须要添加配置的后缀如test方法:
public function testAction(){echo "test";}
内部调用:
在Home文件夹下建立Event->UserEvent.class.php:
<?php
namespace Home\Event;
class UserEvent{
public function test(){
echo "这是事件控制器层的封装,不对外公开,属于内部调用!也就是说url不能直接访问到我";
}
}
?>
然后控制器中:
$userEvent=new UserEvent();
$userEvent->test();
或者这样:
//参数:控制器名,控制器所在层次名
$userEvent=A('User','Event');
或者这样(支持跨模块):
$userEvent=A('Home/User','Event');
开启二级控制器访问:
默认情况下是不被允许访问二级控制器的,如home模块下controller目录中都是存放的控制器,而在该目录下再建立一个Member目录,Member再建立CommentController.class.php如:
<?php
namespace Home\Controller\Member;
use Think\Controller;
class CommentController extends Controller{
public function test(){
echo 'comment test';
}
}
?>
此时访问url如:
http://localhost/index.php/Member/Comment/test
是无效的。
在配置文件中添加如下配置项:
'CONTROLLER_LEVEL'=>2,
然后再次访问就ok了。
配置二级控制器后一级控制器就不能使用了。
注释掉该配置或修改为:
'CONTROLLER_LEVEL'=>1,
都可以重新恢复一级控制器的使用。
以上便是多级控制器的使用。
前置与后置方法:
如有index方法,以及前置和后置方法如:
public function index(){
echo 'my is index'.'<br/>';
}
public function _before_index(){
echo '在index执行前先执行本方法'.'<br/>';
}
public function _after_index(){
echo '在index执行后执行本方法'.'<br/>';
}
参数绑定:
如index方法:
public function index($id){echo $id;}
此方法中要接收一个id值,若地址栏没有传参id则会报错,这是因为参数绑定默认是开启的状态,若需要关闭参数绑定可在配置文件中:
'URL_PARAMS_BIND'=>false,
按参数顺序传参:
如index方法:
public function index($id,$type){
echo $id;
echo $type;
}
此时访问如:
http://localhost/User/index/id/5/type/a
这是根据参数名绑定的方式访问。
但有时候不想键入参数名,直接按照参数定义的顺序来传参访问,那么就需要在配置文件中添加如下:
'URL_PARAMS_BIND_TYPE'=>1,
此时访问如:
http://localhost/User/index/5/a
此时虽然也可以像http://localhost/User/index/id/5/type/a这样访问,但数据会混乱。
关键字词:thinkphp3.2.1,控制器