告别重复Slug:使用drobee/nova-sluggable简化Laravel Nova开发

发布时间 - 2025-03-11 00:00:00    点击率:

我最近在开发一个博客系统,使用laravel nova作为后台管理界面。为了方便管理文章,我需要为每篇文章生成一个唯一的slug,用于文章的url。起初,我尝试手动维护slug,但很快发现这非常低效。每添加一篇文章,都需要手动检查slug的唯一性,如果重复则需要手动修改,这不仅浪费时间,还容易出错。更糟糕的是,在多人协作的开发环境下,这种手动方式会变得更加混乱。

于是我开始寻找解决方案,最终找到了drobee/nova-sluggable这个Laravel Nova扩展包。它可以自动生成唯一的Slug,并在用户输入标题时实时更新,完美地解决了我的问题。

安装drobee/nova-sluggable非常简单,只需要使用Composer:

composer require drobee/nova-sluggable

安装完成后,在你的Nova资源中添加SluggableTextSlug字段:

use Drobee\NovaSluggable\SluggableText;
use Drobee\NovaSluggable\Slug;

class Post extends Resource
{

// ...

public function fields(Request $request)
{
    return [
        // ...

        SluggableText::make('标题'),
        Slug::make('Slug'),

        // ...
    ];
}

}

就这么简单!现在,当用户在“标题”字段输入文字时,“Slug”字段会自动生成对应的Slug,并且保证其唯一性。 这个包甚至支持自定义Slug字段名称、语言、最大长度、分隔符以及更新事件(keyupblur)。 例如,要自定义Slug字段的最大长度为100,可以使用如下代码:

Slug::make('Slug')->slugMaxLength(100);

更重要的是,drobee/nova-sluggable可以与流行的Spatie\Sluggable包无缝集成,如果你的模型已经使用了Spatie\Sluggable,那么drobee/nova-sluggable会自动继承其配置,无需额外设置。 这大大简化了配置过程,并确保了Slug生成的一致性。

为了确保Slug的唯一性,你需要在Slug字段上调用slugUnique()方法,并指定Eloquent模型:

Slug::make('Slug')

->slugUnique()
->slugModel(static::$model);

通过这些简单的配置,drobee/nova-sluggable 就能够为我的博客系统自动生成唯一且友好的Slug,极大地提升了开发效率和用户体验。 再也不用担心Slug重复或手动维护Slug带来的麻烦了! 这让我可以将更多精力投入到其他更重要的功能开发中。 如果你也正在为Laravel Nova项目的Slug问题苦恼,强烈推荐你试试drobee/nova-sluggable。 相信它会成为你开发利器,让你的开发过程更加流畅高效。 学习更多关于Composer的使用技巧,可以参考这个Composer在线学习地址:学习地址。


# composer  # laravel  # 博客系统  # 继承  # 事件  # 的是  # 自动生成  # 更重要  # 自定义  # 你也  # 并在  # 它可以  # 只需要  # 可以使用  # 它会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何制作一个表白网站视频,关于勇敢表白的小标题?  Laravel怎么使用artisan命令缓存配置和视图  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  简历在线制作网站免费版,如何创建个人简历?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何快速搭建二级域名独立网站?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  详解jQuery中的事件  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  js实现获取鼠标当前的位置  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  深圳网站制作平台,深圳市做网站好的公司有哪些?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  微信推文制作网站有哪些,怎么做微信推文,急?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  详解Android——蓝牙技术 带你实现终端间数据传输  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Android滚轮选择时间控件使用详解  如何在阿里云高效完成企业建站全流程?  HTML 中动态设置元素 name 属性的正确语法详解  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何在Windows虚拟主机上快速搭建网站?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  香港服务器网站卡顿?如何解决网络延迟与负载问题?  在线教育网站制作平台,山西立德教育官网?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何用已有域名快速搭建网站?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在香港免费服务器上快速搭建网站?  JS经典正则表达式笔试题汇总  Laravel怎么连接多个数据库_Laravel多数据库连接配置  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口