大家好,最近花了不少時間在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 協議》,轉載必須註明作者和本文連結