在Laravel 5.5

时间:2017-10-17 05:18:03

标签: php laravel slug

我正在使用Laravel 5.5创建博客文章。在这里,我想在保存时为帖子自动生成可访问的slug。我在这里做的是:

'slug' => str_slug(request('title'))

它会生成slug值,但页面url不起作用。例如,如果我点击127.0.0.1:8000/title,它应该重定向我。

控制器

public function save(Request $request, Post $post)
{
    $post= new Post;
    $post->title = request('title');
    $post->slig => str_slug(request('title'));

    $post->save();
}

路线

    Route::post('/', 'PostsController@save')->name('add_post');

2 个答案:

答案 0 :(得分:0)

我会考虑使用其中一个Sluggable包。 https://packagist.org/?q=sluggable我之前使用过Spatie的那个,效果很好。

一旦你创建了新的实体/模型,然后你就有了一个slug,你需要创建一个到控制器的路由,该控制器使用slug字段查找实体。

$thing = Thing::whereSlug($request->get('slug'))->firstOrFail();

答案 1 :(得分:0)

我们保存标题,并将每个空格替换为破折号'-',以便在保存此步骤后自动生成帖子的可访问提示: 我在控制器上使用此代码

   public function store(Request $request){$post->slug = str_replace(' ','-',strtolower($post->title));}

public function show($slug)
{
    //
    $post=Post::where('slug',$slug)->first();
    return view('posts.show', compact('post'));
}

并像这样编辑帖子链接

<a href="/posts/{{$post->slug}}">link</a>