Laravel 7 routing



我有两个挂起的状态&已完成。但当我点击挂起或完成的链接时,Laravel会给我这样的URL,

http://website/post?pendinghttp://website/post?completed

但我期待这样的网址,

http://website/post/pendinghttp://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/pendinghttp://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>

最新更新