ThinlPHP5之控制器

控制器采用驼峰命名注意,比如UserInfo,那么URL访问时不能访问UserInfo,因为浏览器会将UserInfo强制转换成userinfo小写,而是应该在大写字母写加_,比如http://www.yd.com/user_info访问


控制器加载界面的三种方式:
我们先创建前端界面,前端界面都在index模块下的view层,view下创建和控制器名字相同的目录,在目录下创建和控制器方法一样名字的html文件
比如我分别在application/index/showview下创建了两个html界面:show.html,showtwo.html
然后我创建了showview控制器

use think\Controller;
class Showview extends Controller
{
    public function index(){
        echo '我是ShowView的index';
    }
    //  加载前端界面的三种方式
    public function show(){
        //第一种,直接调用view()函数,它会自动寻找view模块下showview目录下的show文件
//        return view();
        //第二种,调用think\View下的fetch()方法
//        $view=new \think\View;
//        return $view->fetch();
        //第三种方法,使用Controller下fetch()方法
        return $this->fetch();              //控制器需要继续Controller
    }
    public function showtwo(){
        return view();
    }
}

数据输出
我们控制器里面的方法默认return返回的是html格式的数据,我们可以修改默认返回的格式,在config.php下面修改

 // 默认输出类型
            'default_return_type'    => 'html',    //将html可以修改为json

AJAX请求默认返回的数据类型

// 默认AJAX 数据返回格式,可选json xml ...
    'default_ajax_return'    => 'json',

控制器的初始化
使用_initialize()方法,我们在URL访问控制器的任意方法时,会先加载_initialize方法,详情请看ThinkPHP的文档控制器初始化,控制系比如集成constroller
前置操作 控制器必须集成Constroller
作用:我们在URL请求控制器的某些方法时,可以让请求的方法调用前先加载指定的方法,比如调用A方法时,可以先指定在加载A方法前必须加载B方法

use think\Controller;
class before extends Controller
{
    protected $beforeActionList = [
        'testA',
        'testB' =>  ['except'=>'indexthree'],               //前置方法testB不能让indexthree方法使用
        'testC'  =>  ['only'=>'index'],                     //前置方法testC只能让index方法使用
    ];
    public function testA(){
        echo "testA<hr>";
    }
    public function testB(){
        echo "testB'<hr>'";
    }
    public function testC(){
        echo "testC<hr>";
    }

    public function index(){
        return "index";
    }
    public function indextwo(){
        return "indextwo";
    }
    public function indexthree(){
        return "indexthree";
    }
}
文章来源: ThinlPHP5之控制器

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:ThinlPHP5之控制器