Search code examples
laravellaravel-7

Request::is() only work on parent route. How to use that on child route?


I've tried using Request::is() to print some bootstrap class but unfortunately, it only works on the parent route user, but when I use it in their child, it is not working on user/create

Here is my code:

<ul class="dropdown-menu">
     <li class="{{ Request::is('posts') ? 'active' : '' }}"><a class="nav-link" href="/posts">Posts</a></li>
     <li class="{{ Request::is('posts/create') ? 'active' : '' }}"><a class="nav-link" href="/posts/create">Create New</a></li>
</ul>

Solution

  • You can try using (*) for any route before or after the URL:

    <ul class="dropdown-menu">
         //post/sub_url
         <li class="{{ Request::is('posts/*') ? 'active' : '' }}"><a class="nav-link" href="/posts">Posts</a></li>
         //match url
         <li class="{{ Request::is('posts/create') ? 'active' : '' }}"><a class="nav-link" href="/posts/create">Create New</a></li>
         //match any sub_url with any prefix
         <li class="{{ Request::is('*/posts/create/*') ? 'active' : '' }}"><a class="nav-link" href="/posts/create">Create New</a></li>
    </ul>