如何更改laravel中的URL

时间:2017-10-30 11:05:30

标签: laravel routes laravel-5.4

我有一个博客列表。当我点击博客时,我想将URL设为博客名称,如:www.domain.com/blog/my-blog-name

在我的博客列表中,我的链接为blog / blogid(2/3/4) ex:www.domain.com/blog/1

当有人访问www.domain.com/blog/1时,网址应为www.domain.com/blog/my-blog-name {博客名称将根据博客ID更改}

我对此做了很多研究,但没有运气。如果有人帮我解决这个问题会很棒。

我正在使用laravel 5.4。我也是laravel的新手。

6 个答案:

答案 0 :(得分:3)

您可以为您的博客创建一个独特的slug或名称,但由于名称可能是重复的,并且对于用户来说很难手动创建一个独特的slug,那么我建议您这样做

Route::get('/blog/{id}/{name}',  'BlogController@show');

这在url中看起来不错,例如在stackoverflow中!

答案 1 :(得分:2)

您需要在数据库中创建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 }

并在您的控制器中

slug

我建议您使用Eloquent-Sluggabletitle字段中自动创建$post = new Post([ 'title' => 'My Awesome Blog Post', ]); $post->save(); // $post->slug is "my-awesome-blog-post"

ComboBox {  
    anchors.fill: parent  
    model: rangeList  
    currentIndex: 1
}

答案 2 :(得分:0)

尝试以下一个!

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
}

希望这能帮到你!

答案 3 :(得分:0)

你可以简单地从数据库中取出你的头衔并将其用作下面的slu ::

$slug = str_replace(' ','-',$yourtitle);

答案 4 :(得分:0)

您可以在模型中使用Laravel mutators 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();


}

答案 5 :(得分:0)

您可以覆盖功能getRouteKeyName

-0