3 控制器 + 助手函数

一 控制器定义

1)控制器定义

1 控制器文件通常放在controller目录下  类名和文件名保持大小写一致 采用大驼峰命名

2 如果要改变 controller 目录名 在 config\route.php中修改 'controller_layer' => 'controllers'

3 如果你定义的类名称是 HelloLibai{}
http://www.blog.com/admin/hellolibai
http://www.blog.com/admin/hello_libai

2)控制器后缀

如果你希望避免引入同名模型类的时候冲突

//修改配置文件:config\route.php 目录下 'controller_suffix' => true

//控制器类名:class UserContr {};

//对应的文件目录:app\controller\UserController.php

 

3)渲染输出

控制器的输出统一使用 return 的方式

return 'hello world'//输出字符串

return json($data); //输出json

return view(); //输出默认模板输出

中断调试请使用halt助手函数
不要使用exit die在内的中断代码

4 )多级控制器

控制器的文件位置  app\admin\controller\news\Blog.php

正常访问:http://www.blog.com/admin/news.blog/index

路由设置:Route::rule('news','news.blog/index');

 

二 基础控制器

1)系统默认的 BaseController.php

1 通过构造方法注入了 think\app 和 think\request 两个对象

2 编写了 validate 验证方法

3 可以通过 调用属性的方式 调用app 和 request 类 [ 属性已经通过构造函数初始化 ]
$this->app $this->request

2)app 和 request 的使用

<?php
namespace app\admin\controller;
use app\BaseController;

class Index extends BaseController
{
    public function hello(){
        $action = $this->request->action();//获取当前的操作名
        $path = $this->app->getBasePath();//获取应用基础目录
        return $action.$path;
    }
}

3)使用验证方法

<?php
namespace app\admin\controller;
use app\BaseController;
use think\exception\ValidateException;

class Index extends BaseController
{
    //开启批量验证 重写定义父类的属性值为true
    protected $batchValidate = true;

    public function hello(){
        try{
            $this->validate([
                'name' => '',
                'email' => 'dd',
            ],'\app\admin\validate\Demo');
        } catch (ValidateException $e) {
            dump($e->getError());
        }
    }
}

 

三 空控制器 [ error类 ]

1 当系统找不到指定的 控制器名称 的时候,系统会尝试定位当前应用下的空控制器 error 类

2 利用这个机制我们可以定制错误页面 和 优化 url
<?php
namespace app\admin\controller;
class Error
{
    public function __call($name,$arguments)
    {
        // TODO: Implement __call() method.
        var_dump($name);
        var_dump($arguments);
        return 'error request';
    }
}

四 资源控制器

RESTFul 接口api使用的

五 控制器中间件

没有研究明白

 

===========================================================================

 

二 助手函数

 

 

posted @ 2021-01-11 21:36  棉花糖88  阅读(106)  评论(0)    收藏  举报