如何在Laravel会话数组

时间:2016-08-31 19:00:53

标签: php laravel session

我正在使用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')。

1 个答案:

答案 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);