Php 在Laravel 5.5上生成后段塞和布线
我正在用Laravel 5.5创建一篇博客文章。在这里,我想在保存后自动为帖子生成可访问的slug。我在这里做的是:Php 在Laravel 5.5上生成后段塞和布线,php,laravel,slug,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->ti
'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');
我会考虑使用一个Slagable包。我以前用过Spatial的,效果很好 一旦创建了新的实体/模型,然后有了slug,您将需要创建一条到控制器的路由,该控制器使用slug字段查找实体
$thing = Thing::whereSlug($request->get('slug'))->firstOrFail();
我们存储标题并将每个空格替换为破折号“-”,以便在保存此步骤后自动为帖子生成可访问的slug:
我在控制器上使用此代码
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>
通过slug查找的控制器和路径在哪里?是的,我想根据存储在数据库中的slug值为页面生成超链接。我只能将slug值存储到数据库中。您只是执行了一些连接操作,但没有成功。连接何处?将slug连接到urlpublic函数show($slug){/$post=post::where('slug',$slug)->first();返回视图('posts.show',compact('post');}您可以共享更多上下文吗?请不要在注释部分添加代码,只需编辑您的答案i add more explain@nicohaase,您能解释一下代码中到底是什么解决了原始问题吗?这样的答案对于其他搜索帮助的用户来说可能具有长期的价值。我们存储标题并替换每个空格以破折号“-”,以便在保存后自动为帖子生成可访问的slug