创建表单
<?php
namespace App\Admin\Form;
use App\Models\Good;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class EditGoodsMatchForm extends Form
{
use LazyWidget;
public function form()
{
$this->select('goods_id', '修改商品')->options(Good::pluck('goods_name', 'id'));
$this->hidden('ids')->attribute('id', 'batchsp-id'); //批量选择的行的id通过隐藏元素 提交时一并传递过去
}
public function handle($input)
{
//获取表单传递过来的值
return $this->response()->success('成功');
}
}
行批量操作
<?php
namespace App\Admin\BatchAction;
use App\Admin\Form\EditGoodsMatchForm;
use Dcat\Admin\Grid\BatchAction;
use Dcat\Admin\Widgets\Modal;
class EditGoodsMatch extends BatchAction
{
public $title = '修改匹配数据';
public function render()
{
$form = EditGoodsMatchForm::make();
$modal = Modal::make()
->lg()
->title($this->title)
->body($form)
->button($this->title);
$modal->onShow($this->getModalScript());
return $modal;
}
protected function getModalScript()
{
// 弹窗显示后往隐藏的id表单中写入批量选中的行ID
return <<<JS
// 获取选中的ID数组
var key = {$this->getSelectedKeysScript()}
//batchsp-id 与 之前弹窗隐藏的绑定的id一致
$('#batchsp-id').val(key);
JS;
}
}
控制器操作
$grid->batchActions([
new EditGoodsMatch(),
]);