🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 控制器 控制器均在模块目录的 Http/Controllers 目录中,以Test模块为例,控制器位于modules/Test/Http/Controllers 前台控制器:modules/Test/Http/Controllers admin控制器:modules/Test/Http/Controllers/Admin api控制器:modules/Test/Http/Controllers/Api ## 开发流程 推荐使用开发助手,进入模块开发助手后,选择test模块,然后进入控制器开发,新建控制器 > 自动生成控制器或者修改控制器后,可以点击路由参考,复制里面的代码粘贴在对应的路由文件中 ## 控制器说明 请参考laravel的控制器文档,需要注意的是,控制器集成的并不是laravel内置的基础控制器,而是继承自核心模块中的基础控制器: * 后台控制集成自:Modules\Core\Base\AdminController * 前台控制器继承自:Modules\Core\Base\FrontController * Api控制器集成自:Modules\Core\Base\ApiController 一个典型的后台控制器如下: ```<?php namespace Modules\Test\Http\Controllers\Admin; use Illuminate\Http\Request; use Illuminate\Http\Response; use Modules\Core\Base\AdminController; //use Modules\Test\Models\Test; class TestController extends AdminController { /** * 首页 * * @return Response */ public function index() { $this->title = trans('test::test.title'); // 全部获取 //$this->tests = Test::all(); // 部分获取 //$this->tests = Test::with('some')->where('key','value')->orderby('id','asc')->get(); // 分页获取 //$this->tests = Test::with('some')->where('key','value')->orderby('id','asc')->paginate(25); return $this->view(); } /** * 新建 * * @return Response */ public function create() { $this->title = trans('test::test.create'); $this->test = Test::findOrNew(0); return $this->view(); } /** * 保存 * * @param Request $request * @return Response */ public function store(Request $request) { $test = new Test; $test->fill($request->all()); $test->save(); return $this->success(trans('master.created'), route('test.test.index')); } } ``` ## 与laravel控制器不同之处: ### 模板变量赋值: 模板变量赋值可以使用 $this->title = '标题' 这种方式,在视图文件中就可以使用 {{$title}} 输出变量,相当于 with('title', '标题') ### 视图文件 视图使用 return $this->view() ,可以省略view中的视图名称,程序会根据控制器和动作名称自动在当前模块下寻找视图(等价于 $this->view('controller.action') > 如果不想使用默认的视图,也可以显示申明视图 return $this->view('test.index')或者 return $this->view('index'),详见视图寻址规则 ### 操作提示,成功和错误 统一成功和错误的返回方式,使用return $this->success() 和 return $this->error() ,success 和 error 方法在普通请求时会显示操作提示页面,在ajax请求时返回json信息 #### 成功: return $this->success('消息内容', '跳转链接[可选]') 例如创建成功: `return $this->success(trans('master.created'));` `return $this->success(trans('master.created'), route('test.test.index'));` #### 错误: return $this->error('消息内容') 例如创建失败: `return $this->error(trans('master.create.failed'));` ` > succes 和 error 均调用的是基类中的message方法,如果有特殊需求可以使用 $this->message 来返回自定义的操作提示