~~~
public function import()
{
return Admin::content(function (Content $content) {
$content->header('导入用户');
$content->body($this->importForm());
});
}
protected function importForm()
{
return Admin::form(User::class, function (Form $form) {
$form->setAction('/admin/users/importAction');
$form->file('file', '导入文件')->rules('required|mimes:xlsx');
});
}
public function importAction()
{
$data = Input::all();
// 这块逻辑怎么写,
admin_toastr('导入成功');
return redirect('admin/users');
}
~~~
看了你里面Form Admin的源代码,貌似没有找到方法
Form里面的验证是validationMessages,但是这个方法是protected,不能调用,如果是public的话,可以按照store来写
~~~
$data = Input::all();
// Handle validation errors.
if ($validationMessages = $this->importForm()->validationMessages($data)) {
return back()->withInput()->withErrors($validationMessages);
}
if (($response = $this->importForm()->prepare($data)) instanceof Response) {
return $response;
}
DB::transaction(function () {
// 我的逻辑
});
admin_toastr('导入成功');
return redirect('admin/users');
~~~
还有其他方法吗?
你要找一个excel文件解析库,读取上传过来的excel文件,得到数据之后存入数据库
这块逻辑我知道,
目前用Form生成的页面,是否可以复用Form的验证逻辑,类似下面的代码。不然就要自己再写一边验证逻辑是一个重复。目前使用下面的方法问题是,validationMessages是protected的,用不了
~~~
// Handle validation errors.
if ($validationMessages = $this->importForm()->validationMessages($data)) {
return back()->withInput()->withErrors($validationMessages);
}
if (($response = $this->importForm()->prepare($data)) instanceof Response) {
return $response;
}
~~~
你只是要重用表单验证功能?
生成视图和表单验证,就这两块,逻辑肯定就自己实现了
可以自定义,你想全都用laravel-admin的功能实现有点够呛,但在laravel-admin基础上,拓展一个导入功能完全可以,用到插件 maatwebsite/excel,
view层自定义一个表单上传文件即可,后台用excle插件解读数据
Most helpful comment
可以自定义,你想全都用laravel-admin的功能实现有点够呛,但在laravel-admin基础上,拓展一个导入功能完全可以,用到插件
maatwebsite/excel,view层自定义一个表单上传文件即可,后台用excle插件解读数据