我使用Laravel 4.2。我有一个存储文件的方法,我试图在会话数组中推送项目。每次用户单击按钮时,我都希望将这些文件名保存在具有名称的会话数组中,然后我应该获得它们。
我正在尝试使用以下代码:
$name = Input::get('name');
$input = Input::all();
foreach ($input[$name] as $key => $corporate) {
$file_name = $key.'_'.$current_time . '_' . $corporate->getClientOriginalName();
//code for uploading files
if(Session::has($name)) {
Session::push($name.".".$key, $file_name); //I want to add new items in this array
} else {
Session::put($name, $file_name); //for first image
}
}
正如我从laravel文档中读到的:
Push Value to A Array Session Value
会话:推动("用户。团队"、"开发人员");
);"
但是它不会向数组中添加新项,而是覆盖它。
在会话数组中第一次上传图像后,我有:
["director_front_passport[]"]=>
array(1) {
[1]=>
array(1) {
[0]=>
string(54) "0_1472669237_12894473_678457885627912_1258115018_o.jpg"
}
}
上传第二张图片后,会话为:
["director_front_passport[]"]=>
array(1) {
[2]=>
array(1) {
[0]=>
string(33) "0_1472669255_animated_loading.gif"
}
}
什么是正确的方式来推项目在会话数组与明确的名称,我的意思是我应该得到这些项目以后使用:session::get('name')例如
您可以尝试以下代码:
$name = Input::get('name');
$input = Input::all();
$items = Session::get($name, []);
foreach ($input[$name] as $key => $corporate) {
$file_name = $key.'_'.$current_time . '_' . $corporate->getClientOriginalName();
if (!array_key_exists($key, $items)) {
$items[$key] = [];
}
$items[$key][] = $file_name;
}
Session::put($name, $items);