2016-08-30 1 views
1

私はajaxとlaravel 4を使用していて、配列のファイルをアップロードしています。しかし、私はどのように新しい配列とセッション配列を更新するか分からない。私はarray_mergeを試しましたが、それはあまりにも威張っています。laravelでセッション配列を更新する方法4 - 新しい項目で更新する

私の方法は、以下のようになります。私は、新しく作成された小枝既存のセッションの配列をマージする必要がありますどのように

public function storeFiles() { 
 
    $name = Input::get('name'); 
 
    $input = Input::all(); 
 
    $current_time = time(); 
 

 
    $trim_name = trim($name, '[]'); 
 
    $corporate_docs = array(); 
 

 
    foreach ($input[$trim_name] as $corporate) { 
 
     $file_name = $current_time . '_' . $corporate->getClientOriginalName(); 
 

 
     $corporate->move(APPLICATIONS_DIR, $file_name); 
 
     $corporate_docs[] = $file_name; 
 
    
 
    } 
 
    $session = Session::get($name); 
 
    if($session) { 
 
    $docs = array_push($session, $corporate_docs); 
 
    Session::put($name, $docs); 
 
    } else { 
 
    Session::put($name, $corporate_docs); 
 
    } 
 
}

?私のコードは以下のようになります。:

更新

$trim_name = trim($name, '[]'); 
 
       $corporate_docs = array(); 
 

 
       foreach ($input[$trim_name] as $corporate) { 
 
        if ($corporate) { 
 
         $file_name = $current_time . '_' . $corporate->getClientOriginalName(); 
 
       
 
         $corporate->move(APPLICATIONS_DIR, $file_name); 
 
         $corporate_docs[] = $file_name; 
 
         
 
        } 
 
       } 
 
       $session = Session::get($name); 
 
       if (Session::has($name)) { 
 
        $docs = array_merge($session, $corporate_docs); //dd($docs); 
 
        Session::forget($name); 
 
        Session::put($name, $docs); dd(Session::get($name)); 
 
       } else { 
 
        Session::put($name, $corporate_docs); 
 
       }

しかし、それは再びeverwwritenされます。最初のイメージを追加するとセッションに保存され、別のイメージを追加すると最初のイメージがマージされますが、3番目のイメージを追加すると、新しく作成されたセッション配列に最初のイメージと最後のイメージが追加されます。 2番目のイメージは上書きされます。

+1

だから新しいセッション変数の値が右、$からcorporate_docs配列されていますか? –

+0

はい、Session :: get($ name)で取得した古いセッション値。 –

+0

はい、ちょうどarray_mergeを提案しようとしていた –

答えて

0

これを試してみてください:

if(session()->has($name)) { 
    session()->forget($name); 
} 

session()->put($name, $corporate_docs); 
+0

私は過去のプロジェクトでSession :: method()を避けました...理由を覚えていないのですが、セッション() - >メソッド()を呼び出せなかったからだと思います –

+0

私は今、私はlaravel 4で、 '' 'Session :: has()' 'でなければならないと思います。 –

+0

Laravel 4がforget()を持っているかどうかわかりませんが、スクリプトが忘れていないかどうか確認してください( –

関連する問題