基础控制器


大多数情况下,我们建议给你的控制器继承一个基础控制器。

默认安装后,系统提供了一个app\BaseController基础控制器类,你可以对该基础控制器进行修改。

如果是多应用模式的话,你可能需要把该控制器移动到你需要的应用下面,然后更改命名空间。

该基础控制器仅仅提供了控制器验证功能,并注入了think\App和think\Request对象,因此你可以直接在控制器中使用app和request属性调用think\App和think\Request对象实例,下面是一个例子:

namespace app\controller;

use app\BaseController;

class Index extends BaseController
{
    public function index()
    {
        $action = $this->request->action();
        $path = $this->app->getBasePath();
    }
}

控制器验证

基础控制器提供了数据验证功能,使用如下:

namespace app\controller;

use app\BaseController;
use think\exception\ValidateException;

class Index extends BaseController
{
    public function index()
    {
        try {
            $this->validate( [
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ],  'app\index\validate\User');
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }
    }
}

该示例使用了验证器功能,具体可以参考验证章节的验证器部分,这里暂时不做展开。

如果需要批量验证,可以改为:

namespace app\controller;

use app\BaseController;
use think\exception\ValidateException;

class Index extends BaseController
{
    // 开启批量验证
    protected $batchValidate = true;

    public function index()
    {
        try {
            $this->validate( [
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ],  'app\index\validate\User');
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }
    }
}