路线没有将我重定向到正确的页面。它只显示相同的页面,但 url 发生了变化
Route isn't redirecting me to the correct page. It just shows me the same page but the url changes
我制作了一个博客模板,但我在制作路线时遇到了问题。当我点击 link 时,它应该将我重定向到文章页面。相反,它只是将我重定向到相同的 page/same 确切位置。
这是我的代码:
<section id="about" class="ts-block" >
<div id="cards_landscape_wrap-2">
<div class="container">
<div class="row">
@foreach($blogs as $blog)
<div class="col-lg-4">
<a href={{route("blogs.show",$blog->slug)}}>
<div class="card-flyer" >
<div class="text-box">
<div class="image-box ">
<img src="{{'/images/blogs/'.$blog->image}}" alt="{{$blog->title}}" class="img-fluid rounded mx-auto d-block" width="100%"/>
</div>
<div class="text-container">
<h6>{{$blog->title}}</h6>
<p style="max-width: 18rem;"class="ts-opacity__50">{{Str::limit($blog->description,100)}}</p>
</div>
<div class="card-footer">
<span class="text-primary font-weight-bold">Read</span>
</div>
</div>
</div>
</a>
</div>
@endforeach
</div>
</div>
</div>
</section>
博客控制器 :
public function getArticles()
{
return view('blog')->with([
'blogs' => Blog::all(),
]);
}
路线 :
Route::get('/blog/', [App\Http\Controllers\BlogController::class, 'index'])->name('blog');
Route::get('blogs/','App\Http\Controllers\BlogController@getArticles')->name('blogs.show');
Route::get('/admin/blog', 'App\Http\Controllers\BlogController@getBlog')->name('admin.blog');
Route::resource('/blog','App\Http\Controllers\BlogController');
应该将我重定向到另一个页面的路由是带有 BlogController@getArticles
的第二个路由。其他路线没问题。
有人可以告诉我我做错了什么吗?
首先,更改您的路线:
Route::get('/blogs/{slug}','App\Http\Controllers\BlogController@getArticles')->name('blogs.show');
然后,在你的函数中:
public function getArticles($slug)
{
return view('blog')->with([
'blogs' => Blog::firstWhere('slug', $slug);
]);
}
嗯,你的问题有点令人困惑,因为这是代码的预期结果。
您正在调用 'blogs.show' 路由,该路由会将您重定向到博客页面。如果你想为每篇文章创建一个单独的页面,你可以在 laravel.
中使用 Dynamic Rounting
您只需:
在 web.php:
Route::get('blogs/{slug}', 'App\Http\Controllers\BlogController@getArticle')->name('article.show');
在你的控制器中:
public function getArticles($slug)
{
$article = Blog::where('slug', $slug)->first();
return view('article')->with([
'article' => $article,
]);
}
之后,<a href={{route("article.show",$blog->slug)}}></a>
就可以了。
我制作了一个博客模板,但我在制作路线时遇到了问题。当我点击 link 时,它应该将我重定向到文章页面。相反,它只是将我重定向到相同的 page/same 确切位置。 这是我的代码:
<section id="about" class="ts-block" >
<div id="cards_landscape_wrap-2">
<div class="container">
<div class="row">
@foreach($blogs as $blog)
<div class="col-lg-4">
<a href={{route("blogs.show",$blog->slug)}}>
<div class="card-flyer" >
<div class="text-box">
<div class="image-box ">
<img src="{{'/images/blogs/'.$blog->image}}" alt="{{$blog->title}}" class="img-fluid rounded mx-auto d-block" width="100%"/>
</div>
<div class="text-container">
<h6>{{$blog->title}}</h6>
<p style="max-width: 18rem;"class="ts-opacity__50">{{Str::limit($blog->description,100)}}</p>
</div>
<div class="card-footer">
<span class="text-primary font-weight-bold">Read</span>
</div>
</div>
</div>
</a>
</div>
@endforeach
</div>
</div>
</div>
</section>
博客控制器 :
public function getArticles()
{
return view('blog')->with([
'blogs' => Blog::all(),
]);
}
路线 :
Route::get('/blog/', [App\Http\Controllers\BlogController::class, 'index'])->name('blog');
Route::get('blogs/','App\Http\Controllers\BlogController@getArticles')->name('blogs.show');
Route::get('/admin/blog', 'App\Http\Controllers\BlogController@getBlog')->name('admin.blog');
Route::resource('/blog','App\Http\Controllers\BlogController');
应该将我重定向到另一个页面的路由是带有 BlogController@getArticles
的第二个路由。其他路线没问题。
有人可以告诉我我做错了什么吗?
首先,更改您的路线:
Route::get('/blogs/{slug}','App\Http\Controllers\BlogController@getArticles')->name('blogs.show');
然后,在你的函数中:
public function getArticles($slug)
{
return view('blog')->with([
'blogs' => Blog::firstWhere('slug', $slug);
]);
}
嗯,你的问题有点令人困惑,因为这是代码的预期结果。
您正在调用 'blogs.show' 路由,该路由会将您重定向到博客页面。如果你想为每篇文章创建一个单独的页面,你可以在 laravel.
中使用 Dynamic Rounting您只需:
在 web.php:
Route::get('blogs/{slug}', 'App\Http\Controllers\BlogController@getArticle')->name('article.show');
在你的控制器中:
public function getArticles($slug)
{
$article = Blog::where('slug', $slug)->first();
return view('article')->with([
'article' => $article,
]);
}
之后,<a href={{route("article.show",$blog->slug)}}></a>
就可以了。