大多数情况下,我们建议给你的控制器继承一个基础控制器。
默认安装后,系统提供了一个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());
}
}
}