1. 前言
Laravel-Admin是搭建后台管理系统的一款工具,它可以非常快速地生成CRUD操作的界面,无需编写复杂的代码就能完成简单的带有权限控制的后台管理系统。在实际使用中,我们可能会有一些不在表单中展示的数据需要提交,比如说某些数据是由程序自动生成的,这种数据不应该被用户手动编辑。因此,我们需要一种方法来隐藏这些数据并在表单提交时同时提交这些数据,这样我们就能在后台中获取这些隐藏的数据了。
2. 解决方案
2.1 隐藏数据
在Laravel-Admin中,我们可以使用来隐藏表单中需要提交但是不需要被显示出来的数据。这种方式比较简单,但是如果我们需要隐藏很多数据,那么每个隐藏数据都需要手动添加一个就会复杂且不方便。因此,我们可以使用Laravel-Admin提供的Form组件来实现这个功能,Laravel-Admin的Form组件封装了一些常用的表单类型,并提供了一些操作表单的方法,可以让我们更方便地实现表单的提交和验证。
下面是一个例子,我们需要在表单中隐藏id、create_time、update_time这三个字段:
$form = new Form(new Example);
$form->hidden('id');
$form->hidden('create_time');
$form->hidden('update_time');
2.2 获取数据
在表单提交后,我们需要在回调函数中获取表单提交的数据,包括隐藏的数据。Laravel-Admin提供了两种方法来处理表单提交数据,一种是使用Laravel-Admin内置的控制器响应,一种是使用Laravel的Request对象。
如果我们选择使用Laravel-Admin内置的控制器响应,那么我们可以在控制器的回调方法中直接使用$request->all()来获取表单提交的数据:
class ExampleController extends Controller
{
public function store(Request $request)
{
$data = $request->all();
// 将数据插入数据库
Example::create($data);
admin_toastr('提交成功');
return redirect('/admin/examples');
}
}
还有一种方式是使用Laravel的Request对象来获取表单提交数据,这种方式需要手动创建一个Request对象并调用其input方法来获取数据,代码如下所示:
public function store(Request $request)
{
$data = [
'name' => $request->input('name'),
'age' => $request->input('age'),
'gender' => $request->input('gender'),
// ...
];
// 将数据插入数据库
Example::create($data);
admin_toastr('提交成功');
return redirect('/admin/examples');
}
3. 总结
本文介绍了如何在Laravel-Admin表单提交时隐藏一些数据并在回调函数中获取这些数据。我们可以使用Laravel-Admin提供的Form组件来实现数据隐藏的功能,然后使用Laravel-Admin内置的控制器响应或者Laravel的Request对象来获取表单提交的数据。这样可以比较方便地完成后台管理系统的开发。