企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
application\index\controller\Index.php ~~~ namespace app\index\controller; class Index { //前置操作 add、edit等一定要小写(方法定义可以使用驼峰的但是列表里面的方法名只能写小写的) protected $beforeActionList = [ 'beforeAction1',//当前所有方法都调用beforeAction1这个前置方法 'beforeAction2' => ['except'=>'index'],//除了index这个方法,其他所有方法都调用beforeAction2这个前置方法 'beforeAction3' => ['only'=>'add,edit'],//只有add、edit调用beforeAction3这个前置方法 ]; public function _initialize() { echo 'init<br/>'; } public function index() { return new \think\View\View()->fetch('index'); //或者 return view('index'); } } ~~~ 如果继承了`think\Controller`类的话,可以直接调用`think\View`及`think\Request`类的方法,例如: ~~~ namespace app\index\controller; use think\Controller; class Index extends Controller { //前置操作 add、edit等一定要小写(方法定义可以使用驼峰的但是列表里面的方法名只能写小写的) protected $beforeActionList = [ 'beforeAction1',//当前所有方法都调用beforeAction1这个前置方法 'beforeAction2' => ['except'=>'index'],//除了index这个方法,其他所有方法都调用beforeAction2这个前置方法 'beforeAction3' => ['only'=>'add,edit'],//只有add、edit调用beforeAction3这个前置方法 ]; public function _initialize() { if(true){ $this->success('新增成功', 'User/list'); }else{ $this->error('新增失败'); } //如果想修改错误和成功时跳转的默认的模版,参见跳转与重定向章节 } public function index() { // 获取包含域名的完整URL地址 $this->assign('domain',$this->request->url(true)); return $this->fetch('index'); //return $this->view->fetch('index'); } } ~~~ ## **多级控制器** application/admin/controller/v1/Blog.php ``` namespace app\admin\controller\v1; use think\Controller; class Blog extends Controller { public function index() { return $this->fetch(); } public function add() { return $this->fetch(); } public function edit($id) { return $this->fetch(); } } //访问地址可以使用 http://serverName/admin.php/admin/v1.blog/index //如果要在路由定义中使用多级控制器,可以使用: \think\Route::get('blog/add','admin/v1.Blog/add'); ``` 默认情况下,控制器的返回输出不会做任何的数据处理,但可以设置输出格式,并进行自动的数据转换处理,前提是控制器的输出数据必须采用`return`的方式返回 当我们设置输出数据格式为JSON: ~~~ // 默认输出类型(默认html) 'default_return_type' => 'json', ~~~