🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 使用工具表单提交数据 ![](https://img.kancloud.cn/74/e5/74e5e5464d2915b30e8d77af51d9601d_738x132.png) ![](https://img.kancloud.cn/fa/9f/fa9f4b5a445e0b7a1ed4cd1bf6fdfb95_1054x291.png) #### 场景 如上图 我们需要加一个按钮,然后点击出现一个表单弹窗,然后提交 1. 首先在控制器的grid方法中添加对应的按钮 ~~~ /** * Make a grid builder. * @return Grid */ protected function grid() { $grid = new Grid(MemberExchangeCode::with(['user'])); $grid->tools(function (Tools $tools) { $tools->append(ExchangeCodeAction::make()); //也可以直接 new ExchangeCodeAction() 这样就添加了一个按钮 }); return $grid; } ~~~ 其中的ExchangeCodeAction是使用命令创建的 `php artisan admin:action` 使用命令后设置好类的名称 基本上一路回车 默认的配置就行就创建好了 --- ~~~ class ExchangeCodeAction extends Action { public $title = "表单生成兑换码"; /** * 渲染模态框. * @return Modal */ public function render(): Modal { // 这里直接创建一个modal框 model的内容由工具表单提供,这里也需要创建一个工具表单才行 return Modal::make() ->lg() ->title($this->title) ->body(ExchangeCodeForms::make()) ->button("<button class='btn btn-sm btn-primary'>$this->title</button>"); // 这个button就是对应上面的按钮 } } ~~~ --- 创建工具表单 一路回车即可创建完成 `php artisan admin:form ExchangeCodeForms(类名称)` --- ~~~ class ExchangeCodeForms extends Form { /** * Handle the form request. * * @param array $input * * @return Response */ public function handle(array $input) { // dd($input); // 表单提交过来的值 // 再此处理表单逻辑即可 // return $this->error('Your error message.'); return $this->success('Processed successfully.', '/'); } /** * Build a form here. * 这个就是显示的表单 根据实际情况定义 */ public function form() { $this->number('number', '生成数量')->rules('required'); $this->number('expired_days', '有效期限(天)')->rules('required'); } /** * The data of the form. * 这个是表单的默认值,比如 性别的设置 默认为 0 未知 就在此可以设置,如果不需要可以去掉 * @return array */ public function default() { return [ 'number' => '1', 'expired_days' => '1', ]; } } ~~~ 总上配置就可以了 ## 总结 首先 需要创建好一个行为类(`php artisan admin:action`)和 表单工具类(php artisan admin:form ExchangeCodeForms),其中行为类中只需要负责显示按钮和模态框的工作,由其中的`public function render()`方法完成。表单工具类提供表单,和表单逻辑处理即可。