Laravel-Admin 开发笔记
最近在公司开发后台管理系统,然后本着简单快速的原则,选择Laravel-Admin
初期的安装就不说了,基本安装GitHub的安装文档来就行啦
1.自定义问题
但是Laravel-admin已经在后台模板中进行了高度的定义
如果想要自定义界面的话,还是比较复杂,比如要开发一个小说阅读界面。
文档的自定义组件看过了,个人感觉还是比较复杂的,不太实用。
所以想到一个思路,就是通过laravel的渲染视图拿到里面的html,在通过laravel-admin的row方法渲染过去。
经过谷歌,发现view有一个render方法,可以之间渲染html
具体代码大概这样
return Admin::content(function (Content $content) use ($book_id) {
$book = Book::find($book_id);
$chapters = $book->chapters();
$articleView = view('admin.reader',compact('chapters'))
->render();
$content->row($articleView);
});
然后,就可以将定义的内容完全抽离到view层,当然,也可以随便定义啦
2.闭包中的$this
在显示列表的时候,laravel-admin一般使用$gird来进行定义显示的行
$grid->comment_time('评论时间')->display(function ($time){
dd($this);
return date('Y-m-d',$time);
});
在闭包中,这个$this可以拿到当前行的对象所有字段,然后就可以自定义它,做各种花式跳转了,比如帖子列表,我进去之后可以管理该帖子下的所有评论,直接将帖子id传进去过滤就好啦
3.监控字段的更新
后台很多字段的更新往往和业务逻辑有关,当然涉及到重写的问题,在laravel-admin中,都放在ModelForm这个Trait里面,具体代码
<?php
namespace Encore\Admin\Controllers;
trait ModelForm
{
public function show($id)
{
return $this->edit($id);
}
public function update($id)
{
return $this->form()->update($id);
}
public function destroy($id)
{
if ($this->form()->destroy($id)) {
return response()->json([
'status' => true,
'message' => trans('admin::lang.delete_succeeded'),
]);
} else {
return response()->json([
'status' => false,
'message' => trans('admin::lang.delete_failed'),
]);
}
}
public function store()
{
return $this->form()->store();
}
}
我们要做的,当然是重写它了,比如我在书籍状态改变的时候要推送给用户
重写update
public function update($id) {
$book = Book::find($id);
// 给书的作者推送逻辑
$result = $this->form()->update($id);
// 界面的跳转逻辑
return $result;
}
当然,这里有一个方法
admin_toastr('laravel-admin 提示','success');
laravel-admin提示,如果你用laravel-admin,你一定会用到?
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: