Laravel-Admin 自定义操作按钮大全(表格工具区域、行内操作按钮)
Laravel-Admin 自定义操作按钮大全(表格工具区域、行内操作按钮)
一、行内操作按钮
1、单行操作
行内操作按钮-单行操作共需要三步:
- 生成操作类
- 编辑操作类
- 加入到表格
生成操作类
php atisan admin:action Copy --grid-row --name="复制"
编辑操作类
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;class Copy extends RowAction
{public $name = '复制';public function handle(Model $model){//直接调用模型的方法复制保存即可$model->replicate()->save();return $this->response()->success('复制成功.')->refresh();}//可以增加一个dialog()来进行互动public function dialog(){$this->confirm('确定复制?');}}
如果需要弹出框,可以增加一个form方法来进行弹出框的创建
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;class AddStock extends RowAction
{public $name = '增加库存';public function handle(Model $model, Request $request){try {//使用request 来获取form 提交的数据$stock = $request->get('stock');//$model 是当前行的数据,可以直接进行操作$model->stock = $stock;$model->save;return $this->response()->success('库存增加成功')->refresh();} catch (\Exception $e) { return $this->response()->error('产生错误:' . $e->getMessage());}}//增加一个弹出框,使得可以进行表单提交public function form(){$this->text('stock', '增加的库存')->rules('required');}//可以增加一个dialog()来进行互动public function dialog(){$this->confirm('确定复制?');}}
添加到表格
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\Copy;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;class UsersController extends AdminController
{protected function grid(){$grid = new Grid(new Goods());//$grid->column('id', 'id')...$grid->actions(function ($actions) {//use 刚才编辑好的操作类,直接new 出来就可以用了$actions->add(new AddStock());});return $grid;}}
2、批量操作
行内操作按钮-单行操作共需要三步:
- 生成操作类
- 编辑操作类
- 加入到表格
生成操作类
php atisan admin:action Copys --grid-batch --name="批量复制"
编辑操作类
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\BatchAction;
use Illuminate\Database\Eloquent\Collection;class Copys extends BatchAction
{public $name = '批量复制';public function handle(Collection $collection){foreach ($collection as $model) {$model->replicate()->save();}return $this->response()->success('批量复制成功')->refresh();}}
添加到表格
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\Copys;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;class UsersController extends AdminController
{protected function grid(){$grid = new Grid(new Goods());//$grid->column('id', 'id')...//添加到批量操作中$grid->batchActions(function ($batch) {$batch->add(new Copys());});return $grid;}}
也可以将批量操作放到表格工具区域,只需要稍微修改一下即可:
操作类:
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\BatchAction;
use Illuminate\Database\Eloquent\Collection;class Copys extends BatchAction
{//$selector 的值对应html()内的CSS选择器protected $selector = '.report-posts';public function handle(Collection $collection){foreach ($collection as $model) {$model->replicate()->save();}return $this->response()->success('批量复制成功')->refresh();}//在表格工具区域添加一个按钮public function html(){return "<a class='report-posts btn btn-sm btn-danger'><i class='fa fa-info-circle'></i>批量复制</a>";}}
列表:
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\Copys;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;class UsersController extends AdminController
{protected function grid(){$grid = new Grid(new Goods());//$grid->column('id', 'id')...//注意需要添加到表格工具条中,不是之前的行内操作了$grid->tools(function (Grid\Tools $tools) {$tools->append(new Copys());});return $grid;}}
3、跳转到其他页面
行内操作按钮-单行操作共需要三步:
- 生成操作类
- 编辑操作类
- 加入到表格
生成操作类
php atisan admin:action JumpInfo --grid-row --name="用户信息"
编辑操作类
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;class JumpInfo extends RowAction
{public $name = '用户信息';//直接用href()即可,$this->getResource(),获取当前的资源根路径,可以用$this->getKey()获取当前行的主键值public function href(){return "/admin/info?user_id=".$this->getKey();}}
添加到表格
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\JumpInfo;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;class UsersController extends AdminController
{protected function grid(){$grid = new Grid(new Goods());//$grid->column('id', 'id')...$grid->actions(function ($actions) {//use 刚才编辑好的操作类,直接new 出来就可以用了$actions->add(new JumpInfo());});return $grid;}}
二、表格工具区域
表格工具区域自定义工具共需要三步:
- 生成操作类
- 编辑操作类
- 加入到表格
生成操作类
php atisan admin:action Import --name="导入数据"
编辑操作类
<?phpnamespace App\Admin\Actions;use Encore\Admin\Actions\RowAction;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Database\Eloquent\Model;class Import extends RowAction
{protected $selector = '.import';public function handle(Request $request){//用request 获取到上传的文件 $data = Excel::toCollection(new ImportOrders(), $request->file('file'));//单行处理$data = $data->first();//过滤掉不需要的值$data = $data->filter(function ($item, $key) {return [$item[0], $item[1]];});foreach ($data as $item) {//处理数据...}return $this->response()->success('导入完成!')->refresh();}public function form(){$this->file('file', '请选择文件');}public function html(){return <<<HTML<a class="btn btn-sm btn-default import">导入数据</a>
HTML;}}
添加到表格
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\Import;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Grid;class UsersController extends AdminController
{protected function grid(){$grid = new Grid(new Goods());//$grid->column('id', 'id')...$grid->tools(function (Grid\Tools $tools) {$tools->append(new Import());});return $grid;}}
三、返回数据
当处理完逻辑之后,需要返回提示或者下载文件:
返回成功提示:
return $this->response()->success('成功...');
返回失败提示 :
return $this->response()->error('错误...');
返回提示信息:
return $this->response()->info('提示信息...');
返回警告信息:
return $this->response()->warning('警告信息...');
返回之后刷新页面:
return $this->response()->success('Success!')->refresh();
返回之后跳转到其它页面:
return $this->response()->success('Success!')->redirect('/admin/users');
返回之后下载文件:
return $this->response()->success('Success!')->download('http://www.xxx.com/file.zip');
控制提示信息的显示位置、时间:
显示位置的控制方法有topCenter
, topLeft
, topRight
, bottomLeft
, bottomCenter
, bottomRight
, topFullWidth
, bottomFullWidth
。
// 显示在顶部右边,更换显示位置按照下面的格式即可
return $this->response()->topRight()->success('Success!')->refresh();
提示信息默认显示5秒后自动消失,可以通过timeout
方法控制消失时间:
// 3秒之后消失,单位是毫秒
return $this->response()->success('Success!')->timeout(3000)->refresh();
Laravel-Admin 自定义操作按钮大全(表格工具区域、行内操作按钮)相关推荐
- js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable
js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable 参考文章: (1)js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable ...
- ant里面table嵌套子表格_ElementUI el-table行内编辑验证,动态增减行
通过el-from验证动态表格的行内输入 eltable动态增加行或者删除行只需要控制对应的数组就可以实现,行内的验证可以使用el-form的表单验 证,直接上代码: el-form嵌套table f ...
- bootstrap表格 行编辑状态_JS表格组件BootstrapTable行内编辑解决方案x-editable
前言:之前介绍bootstrapTable组件的时候有提到它的行内编辑功能,只不过为了展示功能,将此一笔带过了,罪过罪过!最近项目里面还是打算将行内编辑用起来,于是再次研究了下x-editable组件 ...
- fastadmin框架里基于x-editable实现的表格无刷新行内编辑功能的插件的‘datetime‘时间类型无法使用的解决方法
问题描述: 当editable中的参数type设为为datetime的时候会出现以下报错. Uncaught TypeError: Cannot read property 'DPGlobal' of ...
- 最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云
本文完整版:<最棒的 7 个 Laravel admin 后台管理系统推荐> 目录 Laravel admin 后台管理系按类型选择 脚手架型 CRUD 接口型 可视化编程 新一代低代码开 ...
- Android 3 使用 smartTable 表格工具 实现选中一行 并获得行所有信息
Android 使用 smartTable 表格工具 实现选中一行 并获得行所有信息 强力推荐一款 android 自动生成表格框架 smartTable,它有着非常强大的功能,而且日趋完善,能实现很 ...
- Flutter长图显示,自定义显示图片的指定区域
需求 话不多说,直切正题!我们经常会遇到一个需求,在在一个定高的卡片中显示长图,如下图所示. 假如我们要显示这个长图.如果不考虑自定义显示长图的区域,这个很好实现,没什么可说的. Container( ...
- 白嫖谷歌 GPU 资源!使用神经网络提取 PDF 表格工具来了,支持图片
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI "表哥表姐"们还在为大量PDF文件中的表格发愁吗? 百度一下,网上有大量提取PDF表格的工具,但是,它们都只支持文本格 ...
- 使用神经网络提取PDF表格工具来了,支持图片,关键是能白嫖谷歌GPU资源
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI "表哥表姐"们还在为大量PDF文件中的表格发愁吗? 百度一下,网上有大量提取PDF表格的工具,但是,它们都只支持文本格 ...
最新文章
- CMRNet++:在激光雷达地图中与地图和相机无关的单目视觉定位
- np.reshape()
- python编写测试小工具-Python与游戏测试(小工具篇)
- 用.XML填充TreeView
- redis-java客户端jedis测试
- C/C++——打开文件存储数据的各种方式
- 17-Elasticsearch与关系数据库的对比(索引 Indices的理解,主要概念的理解)
- 怪异的万圣节:图标素材,给对生活有仪式感的设计师!
- cocos2d-x 中创建 CCSprite 精灵动画
- js图片绘制框架 (折线图、柱状图、饼图、热力图) echarts
- 教你计算三种分子性质的方法
- linux SCP远程拷贝文件方法及not a regular file 错误解决方法
- CS231n Assignment1 Knn
- 测评绿联蓝牙音频接收器
- gis属性表怎么导成excel_ArcGIS中将属性表直接导出为Excel的方法
- android service开启前台通知
- eclipse安装red5插件,创建red5项目
- action、gitter
- body 没有被撑开_父元素没有被撑开塌陷问题解决方案
- c语言判定三角形流程图_c语言编写程序:输入三角形的三条边,判断它们能否构成三角形,若能则指出何种三角形。...