我有两个挂起的状态&已完成。但当我点击挂起或完成的链接时,Laravel会给我这样的URL,
http://website/post?pending
http://website/post?completed
但我期待这样的网址,
http://website/post/pending
http://website/post/completed
这是我的代码
web.php
Route::get('post/{status?}',['as' => 'post.status','uses' =>'PostController@status']);
PostController
public function status($status= '', Request $request){
if($status=="pending") {
$posts = Post::where('status','pending')->get();
}
if($status=="completed") {
$posts = Post::where('status','completed')->get();
}
}
index.php
<li class="{{ request()->is('*post/pending') ? ' active' : '' }}">
<a href="{{route('post', 'pending')}}" >
{{ __('Pending') }}
</a>
</li>
<li class="{{ request()->is('*post/completed') ? ' active' : '' }}">
<a href="{{route('post','completed')}}">
{{ __('Completed') }}
</a>
</li>
这两个URL,
http://website/post/pending
http://website/post/completed
工作完全良好&当我手动将结果输入浏览器的搜索栏时,会给出预期结果。
如有任何帮助,我们将不胜感激。
<a href="{{route('post', 'pending')}}" > // this will create query string
<a href="{{route('post', ['status'=>'pending'])}}" > // this will consider as param based url
您必须更改您的视图代码如下:
<li class="{{ request()->is('*post/pending') ? ' active' : '' }}">
<a href="{{route('post', ['status'=>'pending'])}}" >
{{ __('Pending') }}
</a>
</li>
<li class="{{ request()->is('*post/completed') ? ' active' : '' }}">
<a href="{{route('post', ['status'=>'completed'])}}" >
{{ __('Completed') }}
</a>
</li>