Laravel-admin发布2.0BETA版本,欢迎使用和反馈

大家好,最近花了不少时间在laravel-admin的2.0版本的开发工作上面,目前开发工作基本完成,今天发布BETA版本,有兴趣的同学们可以尝试安装使用,如有遇到问题,可通过Github issue反馈。

安装:

composer require encore/laravel-admin:v2.0.0-beta1 -vvv

接下来的步骤参考文档完成安装。

主要调整和更新

下面是2.0beta版本的主要调整更新。

前端框架升级为AdminLTE3

AdminLTE3的整体样式,可以访问adminlte.io预览,其它前端依赖库也都基本升级到了最新的版本,比如Bootstrap升级为4.x版本。
这次升级最多的时间也是花费在这部分的开发工作上面,几乎所有的视图文件都需要调整,大部分的JS库调用同样需要调整,如果大家在使用过程中遇到相关的问题,欢迎反馈。

JS代码和PHP代码分离

在1.x版本中,使用大量的Admin::script()Admin::style()方法, 将JS和CSS代码嵌入页面中,实现一些前端交互效果,不仅影响开发效率,而且增加了后期的维护成本, 在新的版本中,参考了vuejs的思想,通过实现新的视图渲染机制实现JS代码和PHP的分离,比如之前在PHP代码中使用Admin::script()来实现表单组件初始化的方法,使用下面代码就可以实现了:

以表单slider组件的视图文件举例:

<input type="text" class="form-control {{$class}}" name="{{$name}}"  {!! $attributes !!} />

<script require="rangeSlider" @script>
    $(this).ionRangeSlider(@json($options));
</script>

<style>
   input {
       width: 200px;
   }
</style>

<script><style>标签中的代码,将会被提取编译,并实现Admin::script()Admin::style()同样的处理效果。

另外在1.x版本中,表单HasMany组件对于一些表单项类型不能友好支持的BUG, 在新的视图渲染机制下也得到了很好的解决。

关于这部分的详细使用方法,请参考视图渲染;

Grid重命名为Table

在2.0的版本中使用table命令数据表格,在控制器中的表格构建代码将调整为:

<?php

use App\Models\Post;
use Encore\Admin\Table;

class PostController extends AdminController 
{
    public function table()
    {
        $table = new Table(new Post());

        $table->column('id', 'ID');
        $table->column('title', '标题');

        return $table;
    }
}

其它数据表格的使用方法基本保持不变。

静态资源按需加载

在1.x版本中,所有的资源会一次性加载,如果引入了太多的前端库,会严重影响页面加载速度,在2.0版本中解决了这个问题,可以在任何地方使用Admin::js()Admin::css()方法,并且只有在进入页面是才会异步加载所需的资源,这样的话你的后台应用使用了再多的前端库,都不会有页面加载压力。

Form表单ajax异步提交

模型表单和数据表单的提交都调整为ajax异步提交,这个调整,解决了之前版本中,提交错误跳转回来是丢失表单数据的问题。

支持弹出模态框新建或编辑数据

这个功能是基于前两点的优化而实现的,也是很久以来,大家都希望实现的feature,只要使用下面的代码就可以简单开启:

$table->modalForm();

这样,在点击新建按钮和行编辑的时候,将会弹出模态框表单来进行数据的编辑,不再需要跳转的新的页面来编辑数据。

重构了表格的行内编辑功能

1.x版本中的表格行内编辑功能依赖X-editable库来实现,由于X-editable支持的编辑形式有限,所以在2.0版本中移除了X-editable,内置开发实现了基本的行内编辑功能,并且保持了和表单组件一致的方法命名,更加方便使用,具体使用参考文档行内编辑

移除了操作日志和RBAC模块

考虑到不是每个应用都需要这两个功能,所以在2.0版本中移除了这两个模块,后续会考虑将这两个模块封装成扩展的形式提供帮助,当然大家也可以按照自己的需求自行开发。

支持双击表格行来触发数据操作

2.0版本将支持通过双击表格行来触发数据操作, 下面是具体的使用方法

// 双击行跳转编辑页(或者模态框编辑)
$table->dblclick('edit');

// 双击跳转详情页
$table->dblclick('view');

// 双击触发删除操作
$table->dblclick('delete');

// 双击选中当前行
$table->dblclick('select');

注意事项

这次发布的是2.0-BETA公测版本,肯定有很多BUG存在,所以请尽量不要在生产环境使用,待BUG基本修复、功能稳定之后再发布2.0正式版本,有兴趣的同学可以自行安装体验,欢迎提供反馈意见以及feature request.

另外由于2.0版本涉及了大量底层结构的修改,将不支持从1.x版本直接升级,相关的扩展也需要后续更新兼容后才能使用.

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 2个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 60

支持一下 :+1:

2个月前 评论

支持 :+1: :+1: Laravel-admin用起来还是比较舒服的

2个月前 评论

文档链接错了

2个月前 评论
song (楼主) 2个月前
lauwen

支持 :kissing_heart:

2个月前 评论

支持一个,👍

2个月前 评论

:+1:

2个月前 评论
快乐壮

插个眼 支持下

2个月前 评论

:+1: :+1: :+1: 必须支持!

2个月前 评论
ThinkCsly

展示下:

file

file

file

file

2个月前 评论
cantinzing 2个月前
荒街! 2个月前
miaotiao 2个月前
Jyunwaa 2个月前
printphp 3周前

强强强

2个月前 评论

目前支持laravel 6.0吗?

2个月前 评论
song (楼主) 2个月前
Marrigan

markmark

2个月前 评论

不错不错 :+1:

2个月前 评论
colin_king

一库

2个月前 评论
wanghan

支持

2个月前 评论

没rbac 无法升级 除非拓展出来了

2个月前 评论

大佬还是大佬,坚决支持

2个月前 评论

不支持1.x升级,那就得新项目才能尝试了。支持楼主了!

2个月前 评论

支持!!!谢谢laravel-admin让我有了更多的摸鱼时间。我是说学习时间!

2个月前 评论

支持 :+1: :+1: :+1:

2个月前 评论

靠谱 :

2个月前 评论

感谢 z-song

2个月前 评论

@song 这个例子里的 2 是不是应该是数字, 而不是字符串. file

2个月前 评论
song (楼主) 2个月前
ThinkCsly

@song 页签功能个不错的功能。例如:

file

2个月前 评论

点击admin/auth/users路由的时候会报错,src下Table.php文件中第505行的
HTML);需要改成

HTML
);

因为你前面使用了heredoc语法,我本地测试是报错

2个月前 评论

支持一波,移动 rbac 正解,这个还是留给用户自行实现的好。正好本人有个项目未上线(其实是离上线还有不少距离),可以同步测试。

2个月前 评论

强烈要求回复加入 RBAC 模块 :joy:
感谢松哥,辛苦了!

2个月前 评论
xiaoAgiao

支持

2个月前 评论

希望支持form和view的复杂布局,比如tab和column的混合,view也可以支持tab和column的布局。

2个月前 评论

今天测试了一下,界面变化有些大。

2个月前 评论
solgh

:+1: :+1: :+1:

2个月前 评论

file 用户头像没显示出来,不应该显示html标签的。控制器代码如下

    protected function table()
    {
        $table = new Table(new User());

        $table->column('id', __('Id'));
        $table->column('avatar')->image();
        ……
        return $table;
    }

我是在laravel 8里面测试的

问题解决了,问题出在我自己的代码里了。以下代码调用了两次$table->column('avatar'),导致头像没显示……刚刚发现的,把倒数第4行的删掉就正常了

    protected function table()
    {
        $table = new Table(new User());

        $table->column('id', __('Id'));
        $table->column('avatar', '用户名称')->image('', 40, 40)
            ->display(function($value){
                $link= route('users.show', $this->id);
                return "<a target='_blank' href='$link'>{$value} {$this->name}</a>";
            })
        ;
        $table->column('email', __('Email'));
        $table->column('email_verified_at', __('Email verified at'));
        $table->column('password', __('Password'));
        $table->column('remember_token', __('Remember token'));
        $table->column('created_at', __('Created at'));
        $table->column('updated_at', __('Updated at'));
        $table->column('avatar', __('Avatar'));
        $table->column('introduction', __('Introduction'));
        $table->column('notification_count', __('Notification count'));

        return $table;
    }
2个月前 评论

这次是label标签没显示出来,不知道哪儿有问题
左图是v1版本,角色名称显示为灰色的标签;右图是laravel-admin v2版本,鼠标所指的角色名称没有标签效果
file
以下是我的控制器代码截图
我在email字段、roles字段上都调用了label()函数,两个字段都没有标签效果

$table->column('email', __('Email'))->label();
$table->column('roles', '角色')->pluck('name')->label();

file

2个月前 评论

@song beta2 之后引入前端资源的功能似乎失效了, 一直报 Vue is not defined

bootstap 里的代码:

\Encore\Admin\Assets::define('vuejs', [
    'js' => [
        'https://cdn.jsdelivr.net/npm/vue/dist/vue.js'
    ]
]);

view 页面的代码

<div id="container">
    @{{ value }}
</div>

<script require="vuejs">
    new Vue({
        el: "#container",
        data: function () {
            return {
                value: 'abc'
            }
        }
    })
</script>

报错截图 file

js 文件已加载 file

2个月前 评论
song (楼主) 2个月前

反馈个问题:table左上角的全选checkbox不起作用,之前的批量删除按钮没有出来

1个月前 评论

支持一波,不过感觉RBAC模块还是挺有用的,如果可以独立出来就最棒了

1个月前 评论

RBAC 模块很需要,建议保留

1个月前 评论

环境:Windows 10 + nginx 1.19 + PHP 7.4.7 + Laravel 7.27 + Laravel-admin 2.0.0-beta1

表单联动问题或者说期望功能实现:

PHP代码:

file

初始效果:

file

期望初始效果:

file

目前的情况是不管初始值是什么,都是需要点击后才能触发显示相对于的表单组件。

也许我的使用姿势不正确,望告知。谢谢。

1个月前 评论

laravel wechat admin 呢

1个月前 评论

@ilham 你说的不是同一个人开发的吧。

1个月前 评论

label()标签显示不能用

3周前 评论

没有RBAC是不是应该考虑换个名子?

2周前 评论

为什么将权限控制模块去掉呢?

6天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!