首页
关于叶子
Search
1
Win10突然出现不能连接共享打印机一例
310,165 阅读
2
[经验存档] 微星(MSI)B150M-Pro-VD Plus安装系统蓝屏一例
181,690 阅读
3
Laravel“高并发”导致数据“统计”异常一例
71,236 阅读
4
[iOS|Xcode]iOS-App自定义启动页制作(uniapp适用)
52,066 阅读
5
[Windows]查看连接过的WIFI密码
47,956 阅读
代码
分享
琐事
MySQL
数码
前端
MacOS
软件
Windows
PHP
GoLang学习
登录
Search
标签搜索
Laravel
PHP
Windows
Laravel-Admin
Vue
uniapp
CSS
前端
chartjs
HTML
微信
小程序
web
MacOS
App
iOS
工具
Golang
微服务
高并发
Yesr00
累计撰写
64
篇文章
累计收到
7
条评论
首页
栏目
代码
分享
琐事
MySQL
数码
前端
MacOS
软件
Windows
PHP
GoLang学习
页面
关于叶子
搜索到
1
篇与
的结果
2025-02-06
DcatAdmin 中 $form->saving() 与 $form->saved() 的区别及实战示例
核心区别方法触发时机可修改表单值数据持久化状态$form->saving()表单提交后,数据保存到数据库前触发✔️ 生效尚未保存到数据库$form->saved()表单数据成功保存到数据库后触发❌ 需手动处理已生成完整模型数据使用场景对比1. $form->saving() - 保存前干预典型场景:修改即将存储的原始数据 特点:直接修改表单输入值,最终会随表单提交保存到数据库$form->saving(function (Form $form) { // 直接修改表单字段值(生效) $form->input('price', $form->input('price') * 0.8); // 自动打8折 // 或通过模型属性修改(需模型已实例化) if ($form->model()->exists) { $form->model()->slug = Str::slug($form->title); } });2. $form->saved() - 保存后处理典型场景:基于已存储数据的后续操作 注意:此时修改模型数据需手动保存,且要避免无限循环$form->saved(function (Form $form) { // 获取已保存的模型实例 $model = $form->model(); // 修改数据需显式保存 $model->update_count += 1; $model->save(); // 必须手动调用 // 典型场景:关联操作/异步任务 Log::info('数据更新', $model->toArray()); dispatch(new SendUpdateNotification($model)); });常见问题示例Q:为什么在 saved() 中修改数据无效?错误示范:$form->saved(function (Form $form) { $form->model()->price = 100; // 未调用 save() });修正方案:$form->saved(function (Form $form) { $model = $form->model(); $model->price = 100; $model->save(); // 必须显式保存 });最佳实践建议数据预处理优先使用 saving()字段格式化自动生成 slug计算衍生字段值后置操作使用 saved()写入操作日志清理缓存触发异步任务避免循环触发 在 saved() 中保存模型时添加条件判断:$form->saved(function (Form $form) { if ($form->model()->isDirty()) { // 检查是否有修改 $form->model()->save(); } });通过合理运用这两个回调,可以实现表单数据处理的全生命周期管理。关键要牢记:saving 管存前加工,saved 管存后跟进。
2025年02月06日
4,637 阅读
0 评论
0 点赞