我正在尝试将Excel文件导入DB,检查文件格式后,我已经成功完成了,我遇到问题的唯一部分是返回到我的视图页面错误或成功消息。
我的控制器::
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();
}