laravel blade如何将请求段合并到布局中的url路由器?

时间:2014-10-16 05:45:10

标签: laravel blade laravel-routing

我在Laravel开发,使用路由器,请求,刀片(我认为这些都是相关的)

我需要layout.blade.php

的产品过滤器菜单

它会像下面那样过滤和菜单

locations > east, west, south, north
category > shop, f&b, services
is_new > new, all

然后我按照下面的说法制作路由器

Route::get('/at/{location_id?}/{location?}/{category_id?}/{category?}/{is_new?}',array('as'=>'deals','uses'=>'HomeController@index'));

我菜单上的当前解决方案

我需要layout.blade.php中的菜单,并根据用户选择的位置,类别,is_new生成网址。此布局也用于其他操作。

我不知道如何在布局上做这些逻辑。我得到的解决方案有点诡计。

      <ul id='nav-category' class="dropdown-menu extended">
        @if (Request::segment(1)=='deals')
          @foreach (Deal::$categories as $category)
            <li><a href='{{route("deals",array("location_id"=>Request::segment(3),"location"=>Request::segment(4),"category_id"=>$category["id"],"category"=>Str::slug($category["title"])))}}'>{{$category['title']}}</a></li>
          @endforeach
        @else
          @foreach (Deal::$categories as $category)
            <li><a href='{{route("deals",array("location_id"=>"all","category_id"=>$category["id"],"category"=>Str::slug($category["title"])))}}'>{{$category['title']}}</a></li>
          @endforeach
        @endif
      </ul>

问题

  • 使用Request :: segment获取状态似乎非常正确
  • 可能有更多的条件进来并弄乱刀片

这应该是一个常见的问题,但不知怎的,我找不到一个好的做法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

对于您可以使用的网址中的参数;

Route::current()->parameter('location_id|location|category_id');

意味着您永远不会局限于更改路线中的网址模式,仅限于您所称的传递参数。

使用Request :: segment(1)=='deals',除了之外别无他法;

@if(Request::is('deals/*'))

因为这会检查网址的格式是以'deals /'。

开头的