Laravel Framework, PHP & MySQL

Laravel 5.4 toggle sidebar state with AdminLte using Ajax and Sessions

AdminLte is a great Admin theme, one feature that’s really good is being able to toggle the sidebar open and closed but this state does not remain from page to page, wouldn't it be great that when you closed the sidebar it stays closed? 

In this post, I’ll show you how to save its state.

First, add an id of sidebarToggle (you can use the class if you prefer) to the toggle a link. This will be used to detect each time the toggle is clicked on.

<li><a href="#" id='sidebarToggle' class="sidebar-toggle" data-toggle="offcanvas" role="button">
    <i class="fa fa-bars"></i>
</a></li>

Setup an ajax listener, this will fire an ajax request each time the toggle is clicked.

$('#sidebarToggle').on('click', function(e) {
    $.ajax({
        type: "POST",
        url: "{{ url('dashboard/savestate') }}"
    });
});

A post route is now required:

Route::post('savestate', 'DashboardController@saveState');

Now in the controller check if there is a session called sidebarState if there is remove it otherwise set the value of ‘sidebar-collapse’ this will be used on the layout.

public function saveState()
{
    //if no session then save as colaped
    if (Session::has('sidebarState')) {
        Session::remove('sidebarState');
    } else {
        //colapse sidebar
        Session::put('sidebarState', 'sidebar-collapse');
    }
}

Now back in the layout on the body tag pass in the session:

<body class="skin-black sidebar-mini {{ Session::get('sidebarState') }}">

Now every time the toggle is clicked its state will be preserved for the lifetime of the session.

David Carr

David Carr

For the past 12 years, I’ve been developing applications for the web using mostly PHP. I do this for a living and love what I do as every day there is something new and exciting to learn.

In my spare time, the web development community is a big part of my life. Whether managing online programming groups and blogs or attending a conference, I find keeping involved helps me stay up to date. This is also my chance to give back to the community that helped me get started, a place I am proud to be apart of.

Besides programming I love spending time with friends and family and can often be found together going out catching the latest movie, staying in playing games on the sofa or planning a trip to someplace I’ve never been before.