首页
关于叶子
Search
1
Win10突然出现不能连接共享打印机一例
25,934 阅读
2
Laravel“高并发”导致数据“统计”异常一例
23,173 阅读
3
[iOS|Xcode]iOS-App自定义启动页制作(uniapp适用)
13,544 阅读
4
[经验存档] 微星(MSI)B150M-Pro-VD Plus安装系统蓝屏一例
13,023 阅读
5
Laravel 9高并发API数据操作的最佳实践
8,730 阅读
代码
分享
琐事
MySQL
数码
前端
MacOS
软件
Windows
登录
Search
标签搜索
Laravel
Windows
Laravel-Admin
PHP
uniapp
Vue
CSS
前端
chartjs
HTML
微信
小程序
web
App
工具
MySQL
PC
Adobe
Bootstrap
AI
Yesr00
累计撰写
57
篇文章
累计收到
7
条评论
首页
栏目
代码
分享
琐事
MySQL
数码
前端
MacOS
软件
Windows
页面
关于叶子
搜索到
10
篇与
的结果
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日
622 阅读
0 评论
0 点赞
2025-01-07
Dcat-Admin 2.x表单使用select和input进行表单联动一例
前言这个场景是最近在写一个兼职项目的时候用到的一个场景。但是由于select数量太多使用when的话不太合适当前场景。而用自带的load或者loads无法实现正常的赋值,改了各种接口格式不是undefined就是报错。在不想改源码的情况下,使用了当前方法。使用代码示例-以widget form为例$this->select('user_no','用户编号')->options(User::query()->pluck('user_no','id'))->script( " $('select[name=\"station_no\"]').on('change',function(e){ var station_no = $(this).val(); $.ajax({ url:'/admin/name_by_no', method:'GET', data:{q:station_no}, success:(res)=>{ console.log('success',res); $('input[name=\"name\"]').val(res.text); }, fail:(err)=>{ console.log('err',err); } }); })" ); $this->text('name','姓名')->readonly(true); 总结通过上述方法,实现了在选中select选项后对text进行赋值的一个演示。
2025年01月07日
2,643 阅读
0 评论
0 点赞
2024-09-10
Laravel“高并发”导致数据“统计”异常一例
最近在用Laravel写一个接口,大致逻辑如下:用户请求接口,校验用户传参,取数据库数据,数据处理,用户请求数据次数+1,用户剩余请求次数数据-1,返回数据。最近呢,有用户并发比较高,我在校验完数据后拉取数据库用户数据:$check = User::query()->where('id',$id)->first();......中间省略数据处理$remaining_times = $check->remaining_times-1; $total_times = $check->total_times+1; $check->update(['remaining_times'=>$remaining_times,'total_times'=>$total_times]); return response()->json([......]);根据Log获知,有好几条查询 $remaining_times 和 $total_times 在进行加减以后依然维持原数据。 初步判定为并发导致。当时考虑过用事务处理,悲观锁,乐观锁。 但是出于更方便的处理,最后使用 increment() 和 decrement() 进行处理。事情暂定为这样再观察。谨以此做记录,如果有更好的方法后续再更新或者欢迎大佬们评论讨论。
2024年09月10日
23,173 阅读
0 评论
0 点赞
2021-03-23
Laravel-Admin列表筛选后BootStrap-PopOver插件失效
最早的时候用的是 title 进行的气泡提示。发现响应速度慢,样式也不是很好看。于是想起了popover气泡插件。 近日,在优化列表气泡问题的时候,叶子遇到了这样一个问题。首次进入界面。popover正常。 但是在筛选后重载列表的时候。popover就失效了。 检查相关元素,代码未丢失。 于是就只能判断是初始化失效了。 一通搜索的结果,发现有不少append之后popover失效的问题。综合以上判断, 在bootstrap.php中添加如下代码: Admin::script(' (function(){ $("[data-toggle=\'popover\']").popover(); })() ');
2021年03月23日
719 阅读
0 评论
0 点赞
2021-02-07
Laravel-Admin下使用chartjs模板渲染问题一例
叶子最近在做图表的时候遇到一个问题。挣扎了很久。。。最后的最后才破案。。。 下面直接上代码:后端代码: //>计算起止时间相差月份 $month = $this->count_month($start_time,$end_time); $pay_date = []; for($i=0;$i结尾月份固定为$end_time $pay_date[] = (string)date('Y-m',strtotime($end_time)); 这样返回到前端后格式如下: 这样看来。后端返回数据就正常了。我们来看前端。。。下面第一个版本: <canvas id="linePay" style="width:200px;height:50px;"></canvas> $(function () { var ctx = document.getElementById("linePay").getContext('2d'); var smmyChart = new Chart(ctx, { type: 'line', data: { labels:[ @foreach($pay_dates as $v) {{$v}}, @endforeach ], datasets: [{ label: "收费金额", data: [ @foreach($sum_pay as $v) {{$v}}, @endforeach ], backgroundColor: 'rgba(255, 99, 132, 0.2)', borderColor: 'rgba(255,99,132,1)', borderWidth: 1 }, ] }, options: { barPercentage: 1.0, categoryPercentage: 1.0, legend:false, title: { display: false, text: '月收费金额' }, tooltips: { mode: 'index', intersect: false }, responsive: true, scales: { xAxes: [{ beginAtZero: true, }], yAxes: [{ ticks:{ min:0, beginAtZero: true }, }] } } }); }); 这样运行下来。chartjs直接把labels里的年-月当成了减法运算。。。导致了: 接下来一番折腾。是第二版本: <canvas id="linePay" style="width:200px;height:50px;"></canvas> $(function () { var ctx = document.getElementById("linePay").getContext('2d'); var smmyChart = new Chart(ctx, { type: 'line', data: { labels:[ @foreach($pay_dates as $v) {{(string)$v}}, @endforeach ], datasets: [{ label: "收费金额", data: [ @foreach($sum_pay as $v) {{$v}}, @endforeach ], backgroundColor: 'rgba(255, 99, 132, 0.2)', borderColor: 'rgba(255,99,132,1)', borderWidth: 1 }, ] }, options: { barPercentage: 1.0, categoryPercentage: 1.0, legend:false, title: { display: false, text: '月收费金额' }, tooltips: { mode: 'index', intersect: false }, responsive: true, scales: { xAxes: [{ beginAtZero: true, }], yAxes: [{ ticks:{ min:0, beginAtZero: true }, }] } } }); }); 以为强制string后可以达到效果。。。结果真的是然并卵。。。最后的最后。。。才突然想起是不是混编不识别这个东西。。。所以有了第三个版本: <canvas id="linePay" style="width:200px;height:50px;"></canvas> $(function () { var ctx = document.getElementById("linePay").getContext('2d'); var smmyChart = new Chart(ctx, { type: 'line', data: { labels:[ @foreach($pay_dates as $v) "{{$v}}", @endforeach ], datasets: [{ label: "收费金额", data: [ @foreach($sum_pay as $v) {{$v}}, @endforeach ], backgroundColor: 'rgba(255, 99, 132, 0.2)', borderColor: 'rgba(255,99,132,1)', borderWidth: 1 }, ] }, options: { barPercentage: 1.0, categoryPercentage: 1.0, legend:false, title: { display: false, text: '月收费金额' }, tooltips: { mode: 'index', intersect: false }, responsive: true, scales: { xAxes: [{ beginAtZero: true, }], yAxes: [{ ticks:{ min:0, beginAtZero: true }, }] } } }); }); 运行后: 至此排除问题→_→真真是轮引号的重要性。。。
2021年02月07日
688 阅读
0 评论
0 点赞
1
2