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 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
高认可度评论:
你这个 update 重写完全没必要,可以使用 callback,甚至也可以用 Model 的事件(如果前后台通用的话).
这个项目坑还存在不少,看 issue 数量也知道,bug 和不便的地方比较多, 需要动手能力比较强,类似的东西我也用过好几个,我对这种项目也是又爱又恨,效率的确是快,但后续扩展起来很多时候并没有那么方便,甚至很痛苦,所以稍微大点的、瀑布流需求的、后台需求比较多的都不建议用这种东西,吐槽结束。
回复数量: 0
@736713830 回复数量2::smile_cat:
你这个 update 重写完全没必要,可以使用 callback,甚至也可以用 Model 的事件(如果前后台通用的话).
这个项目坑还存在不少,看 issue 数量也知道,bug 和不便的地方比较多, 需要动手能力比较强,类似的东西我也用过好几个,我对这种项目也是又爱又恨,效率的确是快,但后续扩展起来很多时候并没有那么方便,甚至很痛苦,所以稍微大点的、瀑布流需求的、后台需求比较多的都不建议用这种东西,吐槽结束。
@springjk 哈哈,但是现在已经用了,只能已用到底了::8ball:
@anyuzhe 我上面说了看项目需要,明确了后台不仅仅是管理员随便用用而且业务逻辑比较多的时候,建议还是自己写比较好,可以去找个模板写,比如 inspinia, 如果喜欢 SPA 的就在分开写,目前我没有发现非常好用功能又多扩展性又高的这种后台生成器,毕竟这两个需求经常是相对立的。
最近也看了这个,发现自定义起来确实很痛苦,你现在用的怎么样了
@carlclone 还行吧。反正踩了很多坑了。。
laravel-admin 创建(create)和编辑(edit)时,如果某个字段设置了唯一,编辑时该字段没有修改也报冲突,怎么解决的。
@long1774341213 你可以重新update方法,如果字段没有变动的话就不去更新
大致思路:
意思是写一个类继承Form.php类,在控制器调用自己写的类,对吗
这是我的Form.php里面的update,长这样
public function update($id)
{
$data = Input::all();
@long1774341213 重写Model模型的update方法
嗯,谢谢。我想问另一个问题,就是在编辑更新的时候,我想把一些图片信息拿出来,只做展示,不让修改,发现用文档上给的display方法,不好使,也不知道是使用的方式不对,还是怎么,请大神指点一下!!!
@long1774341213 我的做法是这样,仅供参考
谢谢大神,能用。我还需要加点击放大缩小的功能,不知道有其他方法能用不,因为项目用到这种情况比较多,准备自定义一个这样的插件,好复用。
@long1774341213 那就看文档啦,里面有自定义组件的,你研究一下
非常感谢,非常感谢:pray: ,有什么问题再请教您!!!
大神:问一下,radio checkbox的默认选中,怎么写的,加default 好像没什么用?
刚用了不到半个月,一个简单后台的确可以快速实现,需求复杂还是蛮糟心啊
@xylovevae 学习方法:Laravel-Admin文档:http://laravel-admin.org/docs/#/zh/
Laravel-Admin Demo:里面含实现的代码:http://laravel-admin.org/demo/auth/login
遇到问题提问地址:https://github.com/z-song/laravel-admin/is...
都是这么来的,我第一次用的时候也什么都不懂,边用边学边总结呗
你们多对多的表,修改添加数据怎么做的,需要填写/修改另一张表里面的多个字段,不是像角色一样只修改一个字段的值,
有没有把关联的另一张表的所有数据都取出来
用过,当需求复杂的时候,就不太合适了,因为作者定好的组件比较固定,重新扩展有点浪费时间
请问一下我想自定义提交表单得怎么写?我表单上有动态的信息需要提交,怎么能自定义保存到数据库呀
刚接触 Laravel-Admin, 请教一下, form 表单有一个 hasMany 方法可以处理一对多表单, 但默认的样式体验不太好, 我想自定义成别的样式, 比如做成 tab 标签的形式, 该怎么处理 ?
@王举 最近也是用了 laravel-admin,你的自定义页面方法很管用,Get。谢谢
很棒啊
大神,问个问题,laravel-admin怎么把图片直接上传到腾讯云COS上面呢,我看了文档上面有上传到七牛云,需要安装对应laravel storage的适配器,但是我没有找到关于腾讯云cos的laravel storage的适配器...
筛选的代码在哪设置??
感觉这个 官方demo的 权限很乱 又有个人权限 又有组权限 还有menu 的role
https://voyager.readme.io/ 用它
想在页面直接传图片到我的七牛云,然后把七牛云返回的key和页面其他表单数据再一同提交给服务器,不知道有没有比较好的方案
@long1774341213 请问你在用重写的类的时候报错了吗
老哥 如果是想在form里面想添加一些JS实现一些表单的效果应该怎么giao???
自定义问题为什么不直接使用这种格式
后台管理系统你用来用户页面,你是不是理解错了
写到自定义完全想跳楼
有办法自己写的前端页面继承到laravel-admin的布局里面吗?
可以试试这个 完全不一样的LaravelAdmin www.laraveladmin.cn
我有做了一个类似的开源项目
LaravelAdmin
www.laraveladmin.cn/ LaravelAdmin,LaravelAdmin官网,LaravelAdmin单页面应用,LaravelAdmin前后端分离,Laravel后台管理系统