Как загрузить файл Excel в Laravel, используя laravelcollective? - PullRequest
0 голосов
/ 22 января 2019

У меня проблема при импорте данных xlsx с использованием пакета fast excel. Я хочу, чтобы входные файлы 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 голосов
/ 22 января 2019

Вы, похоже, не возвращаете ответ в вашем методе Controller, так что это одна из причин, о которой я могу подумать.Я полагаю, ваши модели хранятся?

Что вы можете сделать, чтобы улучшить:

  • Вернуть представление или, что еще лучше, перенаправление после завершения импорта
  • Окружить ваш код блоками try / catch
...