3

Controller name MyController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(){
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(){
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request){
        //
        $request->session()->put('key', '123');
        $data = $request->session()->get('key');
        print_r($data);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id){
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id){
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id){
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id){
        //
    }
    public function contact(){
        return view('contact');
    }

    public function createSession(Request $request){
        //
        $request->session()->put('key', '123');
        $data = $request->session()->get('key');
        print_r($data);
    }
    public function viewSession_v1(Request $request){
        $data = $request->session()->get('key');
        print_r($data);
    }
    public function viewSession_v2(Request $request){
        $data = $request->session()->get('key');
        print_r($data);
    }
}

Route:

Route::get('createSession', 'MyController@createSession');
Route::get('viewSession-1', 'MyController@viewSession_v1');
Route::get('viewSession-2', 'MyController@viewSession_v2');

Now when I call "createSession" it will create new session and when i call either "viewSession-1" or "viewSession-2" it will display session value but I want to remove Request $request from viewSession_v2() so I did following code:

public function viewSession_v2(){
        $request = new \Illuminate\Http\Request();
        $data = $request->session()->get('key');
        print_r($data);
    }

Now when I call "viewSession-2" it will give me following error Error Snap 1 Error Snap 2

Please anyone can tell me how can I create request object in method/function? and why it gives me an error here?

Gufran Hasan
  • 8,910
  • 7
  • 38
  • 51
Dipen
  • 240
  • 1
  • 5
  • 17

2 Answers2

3

You always have access to the request() and session() helpers:

public function viewSession_v2(){
      $data = request()->session()->get('key');
      print_r($data);
}

or

public function viewSession_v2(){
      $data = session()->get('key');
      print_r($data);
}
Stephen Lake
  • 1,582
  • 2
  • 18
  • 27
0

As we know Laravel provides web middleware concepts. I think you should use to remove the session request.

Route::group(['middleware' => ['web']], function () {
    // your routes here
});

More Info

Or you can put this condition as:

public function viewSession_v2(Request $request){
    if($request->hasSession()) {
            $data = $request->session()->get('key');
            print_r($data);
        }
}
Gufran Hasan
  • 8,910
  • 7
  • 38
  • 51
  • No i have to create request object here in the function. i can't do that in route. – Dipen Nov 19 '18 at 07:58
  • I don't understand when i create request object as function parameter it works perfectly then why it's not working in the function body? – Dipen Nov 19 '18 at 08:00
  • Is there a reason you can't just use the `request()` helper? – Stephen Lake Nov 19 '18 at 08:03
  • Please can you explain how i use request() helper for session? – Dipen Nov 19 '18 at 08:04
  • As we know that the session() is a helper that gives you a faster access to request()->session(). – Gufran Hasan Nov 19 '18 at 08:06
  • Or even just use the `session()` helper. I'm not going to post multi-line code as a comment, if the answer I'm about to post doesn't satisfy your question (because I'm not sure I actually know what your question is) then just comment on it and I'll delete it. – Stephen Lake Nov 19 '18 at 08:06
  • see documentation here https://laravel.com/docs/5.0/session and https://laravel.com/docs/5.2/helpers#method-request – Gufran Hasan Nov 19 '18 at 08:08