Code Below, basic example, but I want to return errors (see commented out if statement after the import ). How would I pass variables from the 'import' class back to the controller?
Controller:
public function resultsImport(Request $request)
{
//validate the xls file
$this->validate($request, array('student_results_import_file' => 'required'));
if($request->hasFile('student_results_import_file')){
$extension = File::extension($request->student_results_import_file->getClientOriginalName());
if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") {
Excel::import(new StudentResultsImport, $request->file('student_results_import_file'));
// if $ignore_count>0 --> do stuff
return redirect('/baadmin/students')->with('flash_message', ['success','Results Imported Successfully','Student file "'. $request->student_results_import_file->getClientOriginalName() .'" imported successfully!']);
} else {
return redirect('/baadmin/students')->with('flash_message', ['error','Results Import Failed','Student file "'. $request->student_results_import_file->getClientOriginalName() .'" import failed. File is a '. $extension .' file. Please upload a valid xls/csv file.']);
}
}
}
Import
public function collection(Collection $rows)
{
set_time_limit(300);
$ignore_count = 0;
foreach ($rows as $row) {
if ($row[8] != '') {
//import
}
else {
$ignore_count++;
//$ignore_count is just a simple example, ultimately would probably have an array of the various errors detected on the various rows
}
}
}