您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
laravel11编辑项目的数据验证逻辑、同一页面多表单错误信息串用问题解决、删除项目的逻辑
发布时间:2024-11-04 17:03:21编辑:雪饮阅读()
-
编辑项目的数据验证逻辑其实和创建的时候没有什么大的变化,主要就是针对id进行比较,如果相同id下重名类似需求注意下就行了。这个在前面已经处理过了的。
同一页面多表单错误信息串用问题解决。
其实这个问题我之前也怀疑过,就是在模态框里面的时候那个form表单竟然提交不生效了,所以不能用document.getElementById获取的form元素去直接submit,那样可能走到了原生表单的提交,而他的action是当前页面,之前那个也是当前页面,但是在列表页面种的当前页面对应下的update是不存在的,而且默认应该是get方式提交。
所以我是直接去调用那个form的submit对应的post我们自己封装的那个函数里面了。
删除项目的逻辑
关于这个就好处理了。有很多方法,这里用基于当前breeze+inertia情况下我们之前最熟悉的form来实现。
首先项目列表界面上要新增加一个删除项目的按钮
<div>
<PrimaryButton class="ms-4" style="height:30px;" @click="EditProject(index)">Edit</PrimaryButton>
<PrimaryButton class="ms-4" style="height:30px;" @click="Delete(index)">Delete</PrimaryButton>
</div>
这里调用了Delete方法,其实现如
const Delete=(index)=>{
form.id=props.projects[index].id;
form.delete(route('project.destroy'), {
preserveScroll: true,
onSuccess: () => {
},
onError: (errors)=>{
console.log("删除错误errors",errors);
},
onFinish: () => form.reset(),
});
}
这里有个参数preserveScroll需要了解下,inertia官方的解释
When navigating between pages, Inertia mimics default browser behavior by automatically resetting the scroll position of the document body (as well as any scroll regions you've defined) back to the top of the page.
当在页面之间导航时,惯性通过自动将文档主体的滚动位置(以及您定义的任何滚动区域)重置回页面顶部来模拟默认浏览器行为。
这里我尝试过直接拼接url后面一个id,但是请求实际是从json请求的,所以这个id好像是没有被后端获取到。所以从form追加的。
那么web.php中的路由是自然不可少的
Route::delete('/project', [ProjectController::class, 'destroy'])->name('project.destroy');
加于这里Route::middleware('auth')->group(function () {
接下来就是具体实现的project控制器中的update方法了
public function destroy(Request $request): RedirectResponse
{
$request->validate([
'id' => ['required'],
]);
$id = $request->input("id");
Project::find($id)->delete();
return Redirect::to('/project/index');
}
本期词汇
navigating 航行,操纵(navigate 的现在分词形式)
mimics 模仿,摹拟(mimic 的第三人称单数)
browser 浏览器;逛商店的人
关键字词:laravel
相关文章
- 编辑保存项目的逻辑(laravel里的两种数据绑定)
- 编辑项目的模态框样式(laravel11)
- unique rule的进一步限定与项目分类悬浮状态条效果实
- 新建项目的数据验证(基于laravel11+inertia的数据验证
- 新建项目表单的模态框样式(laravel11+inertia+breeze
- laravel中的一对多关系使用与inertia的link使用
- 列出已有项目分类(laravel11+breeze+inertia实现增与
- 图片上传保存逻辑(laravel11+breeze+inertia+vue3实现
- 更改数据结构的两种方法(laravel的migrate)
- mass-assignment批量赋值异常及期间的注意事项(基于la