Search code examples
laravelpackagepackage.jsonlaravel-session

How to Set & Get Session Data in Laravel Package Development


I am developing a package with a contact form in Laravel. I'm trying to set & get session data, but it's not working with the following.

View

@if(session('success'))
    <div class="alert alert-success alert-dismissible">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        {{session('success')}}
    </div>
@endif

Controller

public function store(Request $request)
{
    //Validation
    $request->validate([
        'email'=>'required|max:50|unique:contact_forms,email'
    ]);

    //Data
    $contact_form = new ContactForm();
    $contact_form->full_name = $request->full_name;
    $contact_form->mobile = $request->mobile;
    $contact_form->email = $request->email;

    //Save
    $contact_form->save();

    //Return back
    return back()->with('success','Record inserted successfully');
}

Route

Route::group(['namespace' => 'W3public\ContactForm\Http\Controllers'], function () {
    Route::get('contact-us', 'ContactFormController@index');
    Route::post('contact-us', 'ContactFormController@store')->name('contact-us');
});

How can I set/get session data in package development in Laravel?Thanks in advance.


Solution

  • Best way of doing this is flash session messages

    Redirect as

    $request->session()->flash('alert-success', 'Record inserted successfully!');
    

    and in your view file

    <div class="flash-message">
    @foreach (['danger', 'warning', 'success', 'info'] as $msg)
      @if(Session::has('alert-' . $msg))
    
      <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }} <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a></p>
      @endif
    @endforeach