首页 / 资讯中心 / 文章详情

Laravel模型验证神器Ardent:告别样板代码,让Eloquent模型自己验证自己的完全指南

Laravel模型验证神器Ardent:告别样板代码,让Eloquent模型自己验证自己的完全指南 ★ FEATURED ARTICLE
后端【免费下载链接】ardentSelf-validating, secure and smart models for Laravels Eloquent ORM项目地址https://gitcode.com/gh_mirrors/ar/ardent点击查看免费下载Ardent 是一款专为 Laravel 框架打造的自验证智能模型库Self-validating smart models for Laravels Eloquent ORM。它让 Eloquent 模型在调用save()时自动完成表单验证、数据填充和敏感字段处理帮你彻底告别控制器里大段重复的验证样板代码。为什么需要 ArdentLaravel 表单验证的痛点写 Laravel 项目时你可能熟悉这样的套路在控制器或路由里定义$rules、实例化Validator、判断passes()、处理错误再回显……每个表单都要重复一遍控制器越来越胖代码既冗长又难维护。Ardent 的思路非常直接把验证规则写进模型本身。模型知道自己怎么验证、怎么填充、哪些字段需要加密写完一次就能在项目间反复复用。这就是所谓自验证Self-validating的含义核心实现位于 Ardent.php。 Ardent 完全继承自Illuminate\Database\Eloquent\Model因此它和原生 Eloquent 模型可以自由混用——只有需要接收用户输入并验证的模型才需要改造。一键安装 Ardentcomposer 快速上手安装非常简单在项目中执行composer require laravelbook/ardent或在 composer.json 的require中加入laravelbook/ardent依赖然后执行composer update。从 composer.json 可以看到Ardent 依赖illuminate/support、illuminate/database、illuminate/validation等 5.x 系列组件体积轻量不会给项目带来额外负担。提示如果你想在 Laravel 之外把 Ardent 当独立 ORM 使用可以调用 Ardent::configureAsExternal() 传入数据库连接配置即可。三步打造第一个自验证 Eloquent 模型这是全文最关键的一步只有 3 个小动作继承 Ardent把模型的父类从Model换成Ardent声明验证规则用静态属性static $rules定义语法和 Laravel Validator 完全一致直接保存调用save()验证不通过会自动返回false并阻止入库规则定义长这样摘自 README.md 示例class User extends \LaravelArdent\Ardent\Ardent { public static $rules [ name required|between:3,80|alpha_dash, email required|between:5,64|email|unique:users, password required|min:6|confirmed, ]; }之后控制器里就只剩清爽的两行逻辑$user new User; $user-save(); // 无效则返回 falsesave()内部会先执行 validate()通过才真正写库验证逻辑见 internalSave()。获取验证错误errors() 一步到位验证失败时错误信息会被装进 Laravel 的MessageBag对象挂靠在模型实例上。你可以用$user-errors()或$user-validationErrors拿到完整错误集合用errors()-all()获取全部错误validationErrors-get(email)获取某个字段的错误这和Redirect::back()-withErrors(...)无缝配合前端回显一行代码搞定相关实现在 errors()。Ardent 高阶实用功能清单 除了基础验证Ardent 还内置了一组脏活累活自动化能力全部只需在模型里打开一个开关功能开启方式作用表单数据自动填充$autoHydrateEntityFromInput true自动从Input::all()填充模型属性强制填充更新场景$forceEntityHydrationFromInput true每次验证都重新填充属性清理冗余字段$autoPurgeRedundantAttributes true自动丢弃password_confirmation、_token、_method等字段密码自动哈希$autoHashPasswordAttributes true明文密码自动转为 Bcrypt 哈希入库这意味着注册场景下逐字段赋值 → 手动 Hash → 逐字段检查这一整段代码都不再需要——new User; $user-save();就是全部。自动填充与清理的细节分别实现在 validate() 和 performSave()。模型钩子在关键时刻插入自定义逻辑Ardent 提供了比 Eloquent 事件更传统的钩子写法在模型类里定义对应方法即可before/afterCreate、before/afterSave、before/afterUpdate、before/afterDeletebefore/afterValidate——返回false可中断验证进而让save()失败例如在beforeSave里做保存前处理。所有before钩子只要返回布尔false当前操作就会停止后面的after钩子也不会执行。钩子的注册逻辑集中在 boot()。另外你还能在运行时通过save()的参数临时传入beforeSave/afterSave闭包无需改动模型类。数组式定义关系让模型类更整洁写 Eloquent 模型时一堆一行式的hasOne/hasMany方法很容易让类变得臃肿。Ardent 支持用静态数组$relationsData声明关系用法与普通方法完全等价public static $relationsData [ address [self::HAS_ONE, Address], orders [self::HAS_MANY, Order], groups [self::BELONGS_TO_MANY, Group, table groups_have_users], ];支持的常量包括HAS_ONE、HAS_MANY、BELONGS_TO、BELONGS_TO_MANY、MORPH_ONE等十种参数校验与分发逻辑见 handleRelationalArray()。更新数据的唯一规则难题交给 updateUniques用unique规则更新记录时Laravel 要求手动排除正在更新的这条记录如unique:users,email,10很麻烦。Ardent 会自动把模型主键补进unique规则里$model-updateUniques(); // 自动处理 unique 排除逻辑你只需要在规则里写unique或unique:users,email表名、字段名、排除 ID 全部由 buildUniqueExclusionRules() 自动推断补齐。其他值得了解的小特性强制保存forceSave() 会照常执行验证但忽略结果直接入库适合先落库再修复的容错场景临时覆盖规则save($rules, $customMessages)可针对单次调用替换验证规则与自定义错误文案自定义错误文案通过static $customMessages设置与 Laravel Validator 语法一致抛异常模式把$throwOnValidation设为true验证失败时抛出 InvalidModelException方便全局异常处理多语言错误信息内置英文 validation.php 和葡语 validation.php 语言包供独立部署模式使用查询增强配套的 Builder.php 支持$throwOnFind让find/first未命中时直接抛出ModelNotFoundException项目文件导航 想深入阅读源码从这几个入口开始即可核心模型基类src/Ardent/Ardent.php查询构造器扩展src/Ardent/Builder.php验证失败异常src/Ardent/InvalidModelException.php英文验证语言包src/lang/en/validation.php葡语验证语言包src/lang/pt-br/validation.php包配置与依赖声明composer.json单元测试配置phpunit.xml需要完整代码的话可以克隆仓库到本地git clone https://gitcode.com/gh_mirrors/ar/ardent总结Ardent 用极简的方式解决了 Laravel 开发中的高频痛点验证规则随模型走、保存即验证、错误随手取再配上自动填充、冗余字段清理、密码自动哈希、数组式关系声明等实用特性让模型代码更短、控制器更薄、跨项目复用更顺畅。对于经常写表单驱动应用、受够了重复验证代码的 Laravel 开发者来说它是一个轻量而高效的选择。赞分享后端【免费下载链接】ardentSelf-validating, secure and smart models for Laravels Eloquent ORM项目地址https://gitcode.com/gh_mirrors/ar/ardent点击查看免费下载相关推荐告别重复验证Laravel Ardent 让你的 Eloquent 模型自动拥有智能验证能力告别重复验证Laravel Ardent 让你的 Eloquent 模型自动拥有智能验证能力 你是否还在为每个 Laravel 模型编写重复的表单验证代码是后端告别手动验证Laravel Ardent如何让你的Eloquent模型拥有智能大脑告别手动验证Laravel Ardent如何让你的Eloquent模型拥有智能大脑 引言你还在为Laravel模型验证头疼吗 作为Laravel开发者你后端FanControl识别不到风扇怎么办6步排查清单找回消失的风扇FanControl识别不到风扇怎么办6步排查清单找回消失的风扇 FanControl 是一款 Windows 平台的风扇控制软件可以手动或按温度自动调节后端上一篇Eglantine 孤儿用户档案Orphaned Profiles排查与存档数据修复实战指南下一篇拆开 Paperless-ngx 内核从扫描件到全文检索OCR 管道每一环都在干什么创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站