如何更改 laravel 中的 URL
How can I change the URL in laravel
我有一个博客列表。当我点击博客时,我想将 URL 作为博客名称,例如:www.domain.com/blog/my-blog-name
.
在我的博客列表中,我有 link 作为 blog/blogid(2/3/4) ex : www.domain.com/blog/1
当有人访问 www.domain.com/blog/1
时,URL 应该是 www.domain.com/blog/my-blog-name
{ 博客名称将根据博客 ID 更改 }
我对此做了很多研究,但没有运气。如果有人能帮助我摆脱困境那就太好了。
我正在使用 laravel 5.4。我也是 laravel 的新手。
尝试下一个!
在您的 routes
文件中:
Route::get('blog/{slug}', 'BlogController@show'); // make sure not conflict with resource routes define
然后是你的 BlogController
:
public function show($slug)
{
$id = explode($slug, '-')[0]; //get id of post
// your logic
}
希望对您有所帮助!
您可以简单地从数据库中获取您的头衔,并将其用作 slug,如下所示:
$slug = str_replace(' ','-',$yourtitle);
您需要在数据库中创建一个 slug
字段,您将 find
使用 slug
而不是 id
post ]
定义路线:
Route::get('post/{slug}', 'PostsControler@findBySlug');
示例http://example.com/post/my-awesome-blog-post
并在您的控制器中
//PostsController.php
public function findBySlug($slug)
{
$post = Post::where('slug', $slug)->firstOrFail();
// return view
}
我建议您使用 Eloquent-Sluggable 从 title
字段自动创建 slug
值
$post = new Post([
'title' => 'My Awesome Blog Post',
]);
$post->save();
// $post->slug is "my-awesome-blog-post"
您可以在模型中使用 Laravel 个修改器 setSlugAttribute:
public function setSlugAttribute($title){
$this->attributes['slug'] = str_replace(' ','-',$title);
}
并将此示例代码写入您的 web.php :
Route::get('/blog/{slug}', 'BlogController@show');
您可以在您的方法中使用 slug。
public function findBySlug($slug){
$post = Post::whereSlug($slug)->firstOrFail();
}
您可以为您的博客创建一个独特的 slug 或名称,但是由于名称可能重复并且对于用户来说很难手动创建一个独特的 slug,所以我建议您这样做
Route::get('/blog/{id}/{name}', 'BlogController@show');
这在 url 中会很好看,例如在 Whosebug 中!
你可以重写函数getRouteKeyName
public function getRouteKeyName()
{
return 'slug';
}
我有一个博客列表。当我点击博客时,我想将 URL 作为博客名称,例如:www.domain.com/blog/my-blog-name
.
在我的博客列表中,我有 link 作为 blog/blogid(2/3/4) ex : www.domain.com/blog/1
当有人访问 www.domain.com/blog/1
时,URL 应该是 www.domain.com/blog/my-blog-name
{ 博客名称将根据博客 ID 更改 }
我对此做了很多研究,但没有运气。如果有人能帮助我摆脱困境那就太好了。
我正在使用 laravel 5.4。我也是 laravel 的新手。
尝试下一个!
在您的 routes
文件中:
Route::get('blog/{slug}', 'BlogController@show'); // make sure not conflict with resource routes define
然后是你的 BlogController
:
public function show($slug)
{
$id = explode($slug, '-')[0]; //get id of post
// your logic
}
希望对您有所帮助!
您可以简单地从数据库中获取您的头衔,并将其用作 slug,如下所示:
$slug = str_replace(' ','-',$yourtitle);
您需要在数据库中创建一个 slug
字段,您将 find
使用 slug
而不是 id
定义路线:
Route::get('post/{slug}', 'PostsControler@findBySlug');
示例http://example.com/post/my-awesome-blog-post
并在您的控制器中
//PostsController.php
public function findBySlug($slug)
{
$post = Post::where('slug', $slug)->firstOrFail();
// return view
}
我建议您使用 Eloquent-Sluggable 从 title
字段自动创建 slug
值
$post = new Post([
'title' => 'My Awesome Blog Post',
]);
$post->save();
// $post->slug is "my-awesome-blog-post"
您可以在模型中使用 Laravel 个修改器 setSlugAttribute:
public function setSlugAttribute($title){
$this->attributes['slug'] = str_replace(' ','-',$title);
}
并将此示例代码写入您的 web.php :
Route::get('/blog/{slug}', 'BlogController@show');
您可以在您的方法中使用 slug。
public function findBySlug($slug){
$post = Post::whereSlug($slug)->firstOrFail();
}
您可以为您的博客创建一个独特的 slug 或名称,但是由于名称可能重复并且对于用户来说很难手动创建一个独特的 slug,所以我建议您这样做
Route::get('/blog/{id}/{name}', 'BlogController@show');
这在 url 中会很好看,例如在 Whosebug 中!
你可以重写函数getRouteKeyName
public function getRouteKeyName()
{
return 'slug';
}