我正在使用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 docs中读到的那样:
将值推送到数组会话值
Session :: push('user.teams','developers');
);`
但它不会向数组中添加新项目,它会覆盖它。
在会话数组中首次上传图像后,我有:
["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')。
答案 0 :(得分:1)
您可以尝试以下代码:
$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);