laravel-admin 批量操作功能问题
官方手册描述是 新创建一个操作类,如下:
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', '原因');
}
}
需要弹出框的,在操作类中添加方法:
public function form()
{
$type = [
1 => '广告',
2 => '违法',
3 => '钓鱼',
];
$this->checkbox('type', '类型')->options($type);
$this->textarea('reason', '原因')->rules('required');
}
点击操作的时候,就会弹出一个form
表单:
在handle
方法中,我们要增加第二个参数来获取表单值:
use Illuminate\Http\Request;
public function handle(Model $model, Request $request)
{
// 获取到表单中的`type`值
$request->get('type');
// 获取表单中的`reason`值
$request->get('reason');
// 你的举报逻辑...
return $this->response()->success('举报已提交')->refresh();
}
问题是,这里只能在handle中获取值,而我需要在form()方法中获取我批量选择的id值,这里应该怎么获取呢? 尝试了在form()里加参数,例如 form(Model $model)
,这样的都直接报错:ArgumentCountError
Too few arguments to function App\Admin\Actions\Post\CreateBuyList::form(), 0 passed and exactly 1 expected (View: D:\laragon\www\IMSys\vendor\encore\laravel-admin\resources\views\grid\table.blade.php)
请教大神,这个问题应该怎么解决?
遗憾的是官方未能提供此方法,可以考虑自己做一个按钮,使用
$.admin.grid.getSelection();
获取选中值,再根据业务逻辑生成表单