Owl Admin 中文文档


<h2><strong>列表</strong></h2> <ul> <li>前端会根据菜单路径, 访问对应的路由, 通过 <code>get</code> 请求, 访问到对应控制器的 <code>index</code> 方法</li> <li>这里通过 <code>_action</code> 参数, 让这个方法同时处理了 3 个功能 <ul> <li>原因: 不需要额外的定义路由, 一个 <code>resource</code> 路由就可以满足所有 <code>CRUD</code> 的功能</li> </ul></li> </ul> <pre><code class="language-php">public function index() { // 带有参数 ?_action=getData 的请求, 查询数据并返回 if ($this-&amp;gt;actionOfGetData()) { return $this-&amp;gt;response()-&amp;gt;success($this-&amp;gt;service-&amp;gt;list()); } // 带有参数 ?_action=export 的请求, 处理导出 if ($this-&amp;gt;actionOfExport()) { return $this-&amp;gt;export(); } // 没有携带 _action 参数的请求, 返回列表结构 return $this-&amp;gt;response()-&amp;gt;success($this-&amp;gt;list()); // 这里调用了 list 方法 }</code></pre> <p>&lt;br&gt;</p> <ul> <li>list 方法, 用于返回列表结构</li> </ul> <pre><code class="language-php">public function list() { // baseCRUD 方法中, 配置了部分基础配置, 如果需要修改, 可以直接在后面覆盖 $crud = $this-&amp;gt;baseCRUD() // CRUD 的顶部工具栏 -&amp;gt;headerToolbar([ $this-&amp;gt;createButton(true), // 新增按钮 ...$this-&amp;gt;baseHeaderToolBar(), // 工具栏内的其他操作按钮 ]) // 筛选器 -&amp;gt;filter( // baseFilter 方法中配置了一个基础的表单 $this-&amp;gt;baseFilter()-&amp;gt;body( // 这里边配置筛选的表单项 amis()-&amp;gt;TextControl('keyword', __('admin.keyword')) ) ) // 表格列 -&amp;gt;columns([ amis()-&amp;gt;TableColumn('id', 'ID')-&amp;gt;sortable(), amis()-&amp;gt;TableColumn('name', __('admin.admin_user.name')), // 行操作按钮 $this-&amp;gt;rowActions([ $this-&amp;gt;rowEditButton(true), // 编辑按钮 $this-&amp;gt;rowDeleteButton(), // 删除按钮 ]), ]); // baseList 方法中是基础的页面配置 return $this-&amp;gt;baseList($crud); }</code></pre> <ul> <li>Service 中的 list 方法, 用于查询数据</li> </ul> <pre><code class="language-php">/** * 列表 获取数据 * * @return array */ public function list() { // 处理查询条件 $query = $this-&amp;gt;listQuery(); // 分页查询数据 $list = $query-&amp;gt;paginate(request()-&amp;gt;input('perPage', 20)); $items = $list-&amp;gt;items(); $total = $list-&amp;gt;total(); return compact('items', 'total'); } /** * 列表 获取查询 (大多数情况下, 只需要重写这个方法即可) * * @return Builder */ public function listQuery() { $query = $this-&amp;gt;query(); // 对应模型的 query 方法 $this-&amp;gt;sortable($query); // 处理排序 $this-&amp;gt;searchable($query); // 处理 CRUD 的 searchable 属性 return $query; // 返回查询条件 }</code></pre> <p>&lt;br&gt;</p> <h2><strong>详情</strong></h2> <ul> <li>页面模式下 <ul> <li>通过访问 <code>xxx/{id}</code> 路由, 进入到 <code>AdminController</code> 方法中的 <code>show</code> 方法</li> <li>在 <code>show</code> 方法中, 调用 <code>detail</code> 方法, 并返回新增页面的结构</li> </ul></li> <li>弹窗模式下 <ul> <li>在访问 <code>rowShowButton</code> 方法时, 会调用 <code>detail</code> 方法, 并返回详情页面的结构</li> </ul></li> </ul> <pre><code class="language-php">/** * 详情 (AdminController 中) * * @param $id * * @return JsonResponse|JsonResource * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function show($id) { // 判断参数, 查询详情并返回 if ($this-&amp;gt;actionOfGetData()) { return $this-&amp;gt;response()-&amp;gt;success($this-&amp;gt;service-&amp;gt;getDetail($id)); } $detail = amis() -&amp;gt;Card() -&amp;gt;className('base-form') -&amp;gt;header(['title' =&amp;gt; __('admin.detail')]) -&amp;gt;body($this-&amp;gt;detail()) // 这里调用了 detail 方法 // 工具栏 -&amp;gt;toolbar([ $this-&amp;gt;backButton() // 返回按钮 ]); $page = $this-&amp;gt;basePage()-&amp;gt;body($detail); return $this-&amp;gt;response()-&amp;gt;success($page); } /** * 前端 amis 通过识别 detail 方法返回的结构来详情页面 * * @param bool $id 对应的主键 * * @return Form */ public function detail($id) { return $this-&amp;gt;baseDetail()-&amp;gt;body([ amis()-&amp;gt;StaticExactControl()-&amp;gt;name('id')-&amp;gt;label('ID'), ]); } /** * 详情 获取数据 (Service 中) * * @param $id * * @return Builder|Builder[]|\Illuminate\Database\Eloquent\Collection|Model|null */ public function getDetail($id) { return $this-&amp;gt;query()-&amp;gt;find($id); }</code></pre>

页面列表

ITEM_HTML