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 自定义操作按钮大全(表格工具区域、行内操作按钮)相关推荐

  1. js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable

    js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable 参考文章: (1)js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable ...

  2. ant里面table嵌套子表格_ElementUI el-table行内编辑验证,动态增减行

    通过el-from验证动态表格的行内输入 eltable动态增加行或者删除行只需要控制对应的数组就可以实现,行内的验证可以使用el-form的表单验 证,直接上代码: el-form嵌套table f ...

  3. bootstrap表格 行编辑状态_JS表格组件BootstrapTable行内编辑解决方案x-editable

    前言:之前介绍bootstrapTable组件的时候有提到它的行内编辑功能,只不过为了展示功能,将此一笔带过了,罪过罪过!最近项目里面还是打算将行内编辑用起来,于是再次研究了下x-editable组件 ...

  4. fastadmin框架里基于x-editable实现的表格无刷新行内编辑功能的插件的‘datetime‘时间类型无法使用的解决方法

    问题描述: 当editable中的参数type设为为datetime的时候会出现以下报错. Uncaught TypeError: Cannot read property 'DPGlobal' of ...

  5. 最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云

    本文完整版:<最棒的 7 个 Laravel admin 后台管理系统推荐> 目录 Laravel admin 后台管理系按类型选择 脚手架型 CRUD 接口型 可视化编程 新一代低代码开 ...

  6. Android 3 使用 smartTable 表格工具 实现选中一行 并获得行所有信息

    Android 使用 smartTable 表格工具 实现选中一行 并获得行所有信息 强力推荐一款 android 自动生成表格框架 smartTable,它有着非常强大的功能,而且日趋完善,能实现很 ...

  7. Flutter长图显示,自定义显示图片的指定区域

    需求 话不多说,直切正题!我们经常会遇到一个需求,在在一个定高的卡片中显示长图,如下图所示. 假如我们要显示这个长图.如果不考虑自定义显示长图的区域,这个很好实现,没什么可说的. Container( ...

  8. 白嫖谷歌 GPU 资源!使用神经网络提取 PDF 表格工具来了,支持图片

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI "表哥表姐"们还在为大量PDF文件中的表格发愁吗? 百度一下,网上有大量提取PDF表格的工具,但是,它们都只支持文本格 ...

  9. 使用神经网络提取PDF表格工具来了,支持图片,关键是能白嫖谷歌GPU资源

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI "表哥表姐"们还在为大量PDF文件中的表格发愁吗? 百度一下,网上有大量提取PDF表格的工具,但是,它们都只支持文本格 ...

最新文章

  1. CMRNet++:在激光雷达地图中与地图和相机无关的单目视觉定位
  2. np.reshape()
  3. python编写测试小工具-Python与游戏测试(小工具篇)
  4. 用.XML填充TreeView
  5. redis-java客户端jedis测试
  6. C/C++——打开文件存储数据的各种方式
  7. 17-Elasticsearch与关系数据库的对比(索引 Indices的理解,主要概念的理解)
  8. 怪异的万圣节:图标素材,给对生活有仪式感的设计师!
  9. cocos2d-x 中创建 CCSprite 精灵动画
  10. js图片绘制框架 (折线图、柱状图、饼图、热力图) echarts
  11. 教你计算三种分子性质的方法
  12. linux SCP远程拷贝文件方法及not a regular file 错误解决方法
  13. CS231n Assignment1 Knn
  14. 测评绿联蓝牙音频接收器
  15. gis属性表怎么导成excel_ArcGIS中将属性表直接导出为Excel的方法
  16. android service开启前台通知
  17. eclipse安装red5插件,创建red5项目
  18. action、gitter
  19. body 没有被撑开_父元素没有被撑开塌陷问题解决方案
  20. c语言判定三角形流程图_c语言编写程序:输入三角形的三条边,判断它们能否构成三角形,若能则指出何种三角形。...

热门文章

  1. 免费wifi共享软件开发记录
  2. 机原自检——第8章 连杆机构及其设计
  3. Linux文件管理、查找与光盘挂载
  4. 二级C语言VC++2010学习版安装
  5. SRM供应商平台哪些好用?
  6. linux tc限制速度,linux tc 限速 控制流量
  7. php 网页转换成pdf,PHP html 转换成PDF wkhtmltopdf HTML 转换成 PDF
  8. 致传统企业码友的一封信:不够痛就别微服务
  9. 百分点数据科学实验室:公众环境满意度与环境质量的关联分析研究
  10. Linux大神进阶十五:磁盘管理