如何在Laravel会话数组中添加项目


How to add items in Laravel session array

我使用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);