如何使用laravelcollective在Laravel中上传Excel文件?

时间:2019-01-22 08:42:48

标签: laravel phpexcel laravelcollective laravel-excel

使用快速Excel软件包导入数据xlsx时出现问题。 我想输入Excel文件,其中包括来自不同模型的ID,如下所示

app / http / clustercontroller:

public function Import($id)
{
    $model = Cluster::findOrFail($id);

    return view('components.Admin.import', compact('model'));      

}

public function StoreImport($id, Request $request)
{

    //VALIDASI
    $this->validate($request, [
        'file' => 'required|mimes:xls,xlsx',
    ]);

    if ($request->hasFile('file')) {
        $file = $request->file('file'); //Get File
        $collection = (new FastExcel)->import($file, function ($line) use ($id) {
            return Soal::create([
                'soal' => $line['Soal'],
                'image' => $line['Image'],
                'A' => $line['A'],
                'B' => $line['B'],
                'C' => $line['C'],
                'D' => $line['D'],
                'E' => $line['E'],
                'kunci' => $line['Kunci'],
                'cluster_id' => $id
            ]); //Import File
        }); 

    }
}

resource / admin / import.blade.php:

{!! Form::model($model, [
    'route' => $model->exists ? ['cluster.soal.store', $model->id] : 'cluster.soal.create',
    'method' => $model->exists ? 'POST' : 'POST',
    'files' => true
]) !!}


    <div class="form-group">
        <label for="" class="control-label">Cluster</label>
        {!! Form::text('cluster', null, ['class' => 'form-control', 'id' => 'cluster']) !!}
    </div>

    <div class="form-group">
        <label for="" class="control-label">File .xlsx</label>
        {!! Form::file('files') !!}
    </div>

{!! Form::close() !!}

上面的代码显示表单,但是当我单击“提交”时没有响应

1 个答案:

答案 0 :(得分:0)

您似乎没有在Controller方法中返回响应,所以这是我能想到的原因之一。我假设您的模型已存储?

您可以做的改进:

  • 完成导入后返回视图,甚至更好的重定向
  • 用try / catch块包围代码