我在Laravel开发,使用路由器,请求,刀片(我认为这些都是相关的)
它会像下面那样过滤和菜单
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>
这应该是一个常见的问题,但不知怎的,我找不到一个好的做法。有什么建议吗?
答案 0 :(得分:0)
对于您可以使用的网址中的参数;
Route::current()->parameter('location_id|location|category_id');
意味着您永远不会局限于更改路线中的网址模式,仅限于您所称的传递参数。
使用Request :: segment(1)=='deals',除了之外别无他法;
@if(Request::is('deals/*'))
因为这会检查网址的格式是以'deals /'。
开头的