我正在使用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');
答案 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>