Owl Admin 中文文档


自定义业务逻辑

<h2>方法重写</h2> <p>在 <code>Slowlyo\SlowAdmin\Controllers\AdminController</code> 中已经实现了以下方法:</p> <table> <thead> <tr> <th style="text-align: left;">方法</th> <th style="text-align: left;">功能</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">index()</td> <td style="text-align: left;">列表页及获取列表数据</td> </tr> <tr> <td style="text-align: left;">create()</td> <td style="text-align: left;">新增页面</td> </tr> <tr> <td style="text-align: left;">store()</td> <td style="text-align: left;">新增数据的保存逻辑</td> </tr> <tr> <td style="text-align: left;">show()</td> <td style="text-align: left;">详情页面及获取详情数据</td> </tr> <tr> <td style="text-align: left;">edit()</td> <td style="text-align: left;">编辑页面</td> </tr> <tr> <td style="text-align: left;">update()</td> <td style="text-align: left;">编辑数据的保存逻辑</td> </tr> <tr> <td style="text-align: left;">destroy()</td> <td style="text-align: left;">删除数据的逻辑</td> </tr> </tbody> </table> <p>就是 resource 路由对应的那几个方法, 如果你还不知道请看 <a href="https://learnku.com/docs/laravel/9.x/controllers/12212#resource-controllers">文档</a></p> <p>&gt; 当默认的方法不满足你的需求时, 可以在你的 controller 重写这几个方法</p> <h2>Controller</h2> <h4>以角色管理控制器举例</h4> <pre><code class="language-php">&amp;lt;?php namespace Slowlyo\SlowAdmin\Controllers; use ...; class AdminRoleController extends AdminController { // 功能对应的Service // 作用: 在 AdminController 中用于实现基础的 CRUD protected string $serviceName = AdminRoleService::class; // 该方法实现了列表页的显示, 以及获取列表数据 public function index(Request $request): JsonResponse|JsonResource { // 返回列表数据 if ($this-&amp;gt;actionOfGetData()) { return $this-&amp;gt;response()-&amp;gt;success($this-&amp;gt;service-&amp;gt;list()); } // 返回页面结构 return $this-&amp;gt;response()-&amp;gt;success($this-&amp;gt;list()); } // 列表页的页面结构 public function list(): Page { // -&amp;gt;baseCRUD() 在AdminController 中 // 对一些基础的页面配置作了封装 $crud = $this-&amp;gt;baseCRUD() // 假如你想单独设置列表页的标题 // 可以在此处再次调用 -&amp;gt;title() 方法, 他会覆盖 baseCRUD() 中的设置 // -&amp;gt;title('Title') // 是否展示筛选折叠按钮 -&amp;gt;filterTogglable(false) // 列表筛选部分表单 -&amp;gt;filter($this-&amp;gt;baseFilter()-&amp;gt;body([ // 内容就是 Form 的 body 属性 // 数据筛选的查询需要在 listQuery() 方法中自行实现 amis()-&amp;gt;InputText()-&amp;gt;name('name')-&amp;gt;label('名称') ])) // 这是数据列 -&amp;gt;columns([ amis()-&amp;gt;TableColumn()-&amp;gt;label('ID')-&amp;gt;name('id')-&amp;gt;sortable(true), amis()-&amp;gt;TableColumn()-&amp;gt;label('名称')-&amp;gt;name('name'), amis()-&amp;gt;TableColumn()-&amp;gt;label('标识')-&amp;gt;name('slug')-&amp;gt;type('tag'), amis()-&amp;gt;TableColumn()-&amp;gt;label('创建时间')-&amp;gt;name('created_at')-&amp;gt;type('datetime')-&amp;gt;sortable(true), amis()-&amp;gt;TableColumn()-&amp;gt;label('更新时间')-&amp;gt;name('updated_at')-&amp;gt;type('datetime')-&amp;gt;sortable(true), // 这个方法会添加操作列 // 默认会生成 -&amp;gt;rowActions() $this-&amp;gt;rowActionsOnlyEditAndDelete(), ]); // baseList() 封装了基础的 Page 以及默认的新增按钮 return $this-&amp;gt;baseList($crud); } // 表单页面结构 (新增/编辑) public function form($isEdit): Form { return $this-&amp;gt;baseForm()-&amp;gt;body([ InputText::make()-&amp;gt;label('名称')-&amp;gt;name('name')-&amp;gt;required(true), InputText::make()-&amp;gt;label('标识')-&amp;gt;name('slug')-&amp;gt;description('角色的唯一标识, 不可重复')-&amp;gt;required(true), TreeSelect::make() -&amp;gt;name('permissions') -&amp;gt;label('权限') -&amp;gt;searchable(true) -&amp;gt;multiple(true) -&amp;gt;options(AdminPermissionService::make()-&amp;gt;getTree()) -&amp;gt;labelField('name') -&amp;gt;valueField('id') -&amp;gt;autoCheckChildren(false) -&amp;gt;joinValues(false) -&amp;gt;extractValue(true), ]); } // 详情页面结构 public function detail(): Form { return $this-&amp;gt;baseDetail()-&amp;gt;body([]); } } </code></pre> <h2>Service</h2> <h4>以角色 Service 举例</h4> <pre><code class="language-php">&amp;lt;?php namespace Slowlyo\SlowAdmin\Services; use ...; class AdminRoleService extends AdminService { // 功能对应的 Model protected string $modelName = AdminRole::class; // 几乎所有的数据库操作都在 Service 中 // 不满足的地方, 在此处重写即可 // 列表/导出数据查询 public function listQuery() // 列表数据 public function list() // 详情获取数据 public function getDetail($id) // 编辑获取数据 public function getEditData($id) // 修改保存 public function update($id, $data) // 新增保存 public function store($data) // 删除 public function delete($ids) }</code></pre>

页面列表

ITEM_HTML