基础控制器
最后更新于:2022-04-02 07:49:12
大多数情况下,我们建议给你的控制器继承一个基础控制器。
默认安装后,系统提供了一个`app\BaseController`基础控制器类,你可以对该基础控制器进行修改。
>[danger] 基础控制器的位置可以随意放置,只需要注意更改命名空间即可。
该基础控制器仅仅提供了控制器验证功能,并注入了`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());
}
}
}
~~~
';