laravel - 从博客文章标题制作网址。Laravel
问题描述
我是 laravel 的初学者,正在开发一个博客网站。制作博客标题链接的最方便的方法是什么,它将引导用户访问博客本身。
解决方案
对于您的每篇博客文章,除了标题之外,还要创建另一列slug
,当您存储博客文章时,也将其 slugify 并存储。然后您可以在查询和路由变量中使用它。
脚步:
在您的迁移中添加slug
$table->string('slug')->unique();
将其放入您的模型中,当您存储模型时,这将自动使标题变为 slug。
use Illuminate\Support\Str;
public static function boot()
{
parent::boot();
self::creating(function($model){
$model->slug = Str::slug($model->title, '-');
});
}
然后在您的博客文章中访问路由:
Route::get('/posts/{slug_title}', 'PostController@show')->name('posts.show');
最后在您的控制器/动作中:
public function show($slug_title)
{
$post = Post::query()
->where('slug', $slug_title)
->first();
return $post;
}
推荐阅读
- c# - 我可以使用 LINQ 找出列表中的给定属性是否重复吗?
- laravel - laravel 中的嵌套资源不起作用
- android - 在安卓设备上进行应用内购买
- sql - SQL 查询的简写,用于按天计算多个表中的记录
- ruby - 'start_driver' 方法作为 nil:NilClass (NoMethodError) 的未定义方法 'start_driver' 返回
- macos - Mac 上的目标 .Netcore 2.1
- reactjs - 如何在 react 中使用 history.push
- ruby-on-rails - 在视图中显示顶级类别名称 | 铁轨上的红宝石
- r - R XML ERROR:'configure'存在但不可执行centos 7
- javascript - 致命错误:找不到“AppDelegate.h”文件#import“AppDelegate.h”