我正在尝试将 Excel 文件导入数据库,在检查文件格式后我已经成功完成,唯一遇到问题的部分正在返回返回我的查看页面,并显示错误或成功消息。
我的 Controller ::
Excel::load(Input::file('datafile'), function ($reader) use($attr_array) {
...
//IF DATA MATCH
if($data_match == 'true')
{
...
foreach ($reader->toArray() as $row) {
$Pdt_data->slug = Util::uniqueSlug($row['attr_name_value'], 'Product');
$rem_value['slug'] = $Pdt_data->slug;
$resultant = array_merge($rem_value, $row);
//INSERT INTO DATABASE
Product::firstOrCreate($resultant);
}
\Session::flash('success', 'Data uploaded successfully.');
return Redirect::back();
}
//IF DATA DOES NOT MATCH
else
{
\Session::flash('error', 'You Are Trying To Import File Of Different Category!');
return Redirect::back();
}
});
我对重复问题没有任何帮助,任何帮助将不胜感激。
最佳答案
我终于自己解决了这个问题:
- 在 Excel 函数外部定义变量
- 使用 & 将其传递给函数
- 在 If 条件下设置变量值 true 或 false
- 根据之前设置的值从外部 Excel 函数调用重定向到 URL。
更新的代码:
$importstatus = ''; //DEFINING VARIABLE OUTSIDE EXCEL FUNCTION
Excel::load(Input::file('datafile'), function ($reader) use($attr_array) {
...
//IF DATA MATCH
if($data_match == 'true')
{
...
foreach ($reader->toArray() as $row) {
$Pdt_data->slug = Util::uniqueSlug($row['attr_name_value'], 'Product');
$rem_value['slug'] = $Pdt_data->slug;
$resultant = array_merge($rem_value, $row);
//INSERT INTO DATABASE
Product::firstOrCreate($resultant);
}
\Session::flash('success', 'Data uploaded successfully.');
$importstatus = 'fine'; //SETTING A VARIABLE VALUE
}
//IF DATA DOES NOT MATCH
else
{
\Session::flash('error', 'You Are Trying To Import File Of Different Category!');
$importstatus = 'error'; //SETTING A VARIABLE VALUE
}
});
//CHECK VARIABLE VALUE FOR DECISION
if ($importstatus == 'fine') {
\Session::flash('success', 'Data uploaded successfully.');
return Redirect::back();
} else {
\Session::flash('error', 'You are trying to import file of Different Category!');
return Redirect::back();
}
关于php - Return Back 在 Excel::load() 函数中起作用:Laravel 4.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866683/