v1.7.3 版本釋出了,在這個版本中,主要有下面的修改和變更:
配置
- 增加
check_route_permission
配置,來控制是否檢查路由許可權。 - 增加
check_menu_roles
配置,用來控制是否檢查選單項的可見角色。 - 增加
top_alert
配置,用來在所有頁面的頂部設定一個提醒欄。 - 增加
grid_action_class
配置,用來指定表格的操作列顯示類。
模型表格
- 增加
$grid->fixColumns($head, $tail)
方法,實現表格列的固定顯示。 - 增加
$grid->quickCreate()
方法,實現在表格頁面快速建立資料,文件。 - 重構了表格的資料操作,可以更優雅的定義行操作和批量操作,文件。
下面簡單介紹一下新增的幾個比較常用的Feature
固定列
如果表格的欄位比較多,擠壓了列的顯示,可以用過fixColumns
方法來設定固定表格的頭部和尾部的列,中間部分的列使用滾動條展示
$grid->fixColumns(4, -3);
第一個參數列示固定從頭開始的前4列,第2個參數列示固定從後往前數的3列,(第二個引數可不傳,預設為-1)
效果如下:
快捷建立
在表格中開啟這個功能之後,會在表格頭部增加一個form表單來建立資料,對於一些簡單的表格頁面,可以方便快速的建立資料,不用跳轉到建立頁面操作
開啟方式:
$grid->quickCreate(function (Grid\Tools\QuickCreate $create) {
$create->text('name', '名稱');
$create->email('email', '郵箱');
});
詳細文件請參考 快捷建立
自定義表格的行&批量操作
這個版本重構了資料表格的行操作和批量操作,可以使用更優雅的方式來自定義表格的行操作和批量操作。
比如定義下面這個實現了行復制的操作類:
<?php
namespace App\Admin\Actions\Post;
use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
class Replicate extends RowAction
{
public $name = '複製';
public function handle(Model $model)
{
$model->replicate()->save();
return $this->response()->success('複製成功.')->refresh();
}
public function dialog()
{
$this->confirm('確定複製?');
}
}
在操作列點選複製
之後,資料會提交到類中的handle
方法中,處理之後返回成功資訊並且重新整理頁面,不必像之前一樣需要手寫JS、定義路由和控制器action等等這些流程來實現了。
另外也支援彈出form表單來輸入使用者資料實現資料操作:
<?php
namespace App\Admin\Actions\Post;
use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class Report extends RowAction
{
public $name = '舉報';
public function handle(Model $model, Request $request)
{
// $model ...
return $this->response()->success('Success message.')->refresh();
}
public function form()
{
$type = [
1 => '廣告',
2 => '違法',
];
$this->checkbox('type', '型別')->options($type);
$this->textarea('reason', '原因');
}
}
上面的行操作,觸發之後會彈出表單,填入資料之後會和當前行資料模型一起提交到handle
方法中處理。
詳細文件請參考 自定義行&批量操作