擴充套件 Laravel-admin,採用分頁風格實現下拉選單,換頁無重新整理,無需寫介面,欄位無需改名稱

zhaiduting發表於2020-03-30

擴充套件 Laravel-admin,採用分頁風格實現下拉選單,換頁無重新整理
效果如 gif 圖,特點:
1、換頁無重新整理;
2、後端無需編寫 api 介面;
3、需要展現的欄位不限,可美化

這個下拉框由於加入了分頁按鈕,所以在處理成千上萬條 options 時,介面依然很友好。設想一下幾千條選項擠滿傳統的下拉框,那根本沒法選。改用 select2 還得一個個的定製 api 介面,還得轉換欄位名稱,由於模型關聯普遍存在,那這樣的介面真要一個個去實現必定是一件非常煩人的事情。

為求一勞永逸,特此開發這款外掛,命名為 form-choice,用法不復雜,一行程式碼表達就是
$form->choose('roles')->from(...)

比如 gif 動畫裡面的程式碼如下所示

$form
    ->choose('roles', '角色')
    ->from(
        Role::class, 
        ['id', 'name', 'info'=>'詳情'], 
        function ($model){
            $model->info= '<span class="text-muted">[guard: '
                . $model->guard_name. '] 角色建立日期 '
                . $model->created_at. '</span>'
            ;
        }
    );

choose() 的引數不用說了,簡單說明一下 from() 的引數:第一個是關聯模型的名稱;第二個陣列是需要展示的欄位列表(其中 info 這個欄位是不存在的);第三個引數是一個回撥,用於格式化任意欄位(儘管 info 這個欄位在ORM模型中不存在,藉助此回撥依然可以為其賦予豐富的含義)。

如果使用過column-relation ,肯定會覺得 form-choice 跟他長得很像。是的,這兩外掛正是一對兄弟。不過使用場景是不一樣的,一個用於列表展示頁,另一個是用在表單提交頁的。

感覺 Laravel-admin 很有意思,可以自行擴充套件,這個就非常靈活了

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章