您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
Task编辑保存相关的逻辑(laravel11表单请求的验证消息自定义)
发布时间:2024-11-07 12:37:37编辑:雪饮阅读()
-
其实基于上篇,我发现我们的task还缺少sendTime字段,用于定义什么时候发送邮件。
首先安装element plus
./vendor/bin/sail npm install element-plus –save
然后在laravel11+vite+inertia架构中全局引入element plus
Y:\root\example-app\resources\js\app.js中如下核心地方的增加修改
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
return createApp({ render: () => h(App, props) })
.use(plugin)
.use(ZiggyVue)
.use(ElementPlus)
.mount(el);
接下来在上篇中的add.vue中加入日期时间组件
<InputLabel for="sendTime" value="SendTime" />
<div class="block">
<el-date-picker
v-model="form.param.sendTime"
type="datetime"
placeholder="Select date and time"
/>
</div>
<InputError class="mt-2" :message="formError['param.sendTime']" />
我这里给默认的邮件发送时间是10分钟后
const form = useForm({
type:0,
param:{
email:"",
subject:"",
body:"",
sendTime:dayjs().add(10, 'minute').format("YYYY-MM-DD HH:mm:ss")
},
});
可以看到我这里调用了dayjs,所以也需要import
import dayjs from 'dayjs';
所以之前其实也需要安装dayjs
./vendor/bin/sail npm install dayjs
所以之前的验证请求TaskUpdateRequest.php中还需要增加对于发送时间的验证
public function rules(): array
{
return [
'type' => [
'required',Rule::in([1,2])
],
'param.email'=>'required_if:type,1|email',
'param.subject'=>'required_if:type,1',
'param.body'=>'required_if:type,1',
'param.sendTime'=>'required_if:type,1|date_format:Y-m-d H:i:s',
];
}
由于sendTime的T是大写,所以如果验证失败的提示会拆分为send time,拆或不拆,这个不好决定。所以最好是自定义。验证请求也可以像是验证器一样自定义,而且实现方式也相同。
public function messages(): array
{
return [
'param.sendTime' => 'sendTime is invalid.',
];
}
所以最后UserTask.php控制器中的update方法实现如
public function update(TaskUpdateRequest $request):RedirectResponse
{
$id=$request->input("id");
if($id){
$userTask=\App\Models\UserTask::find($id);
if (! Gate::allows('update-user-task', $userTask)) {
abort(403);
}
}
if(!$id){
$userTask=new \App\Models\UserTask();
}
$uid=$request->user()->id;
$type=$request->input("type");
$param=$request->input("param");
$userTask->uid=$uid;
$userTask->type=$type;
$userTask->param=json_encode($param);
$userTask->save();
return Redirect::route('user_task.add');
}
最后的效果如
本期词汇
Delayed 延误的,延迟的
Dealing 交易;经营方式
indicating 表明,要求
关键字词:laravel11,表单,验证,请求
相关文章
- 图片上传保存逻辑(laravel11+breeze+inertia+vue3实现
- 3-2 控制器之请求处理
- 12vue请求数据--完整 vue-resource
- composer在linux中最简单省事的安装方法(跳过ssl/http
- vue-cli集成firebase(含google及短信验证码firebase登
- 10_Filter_案例1_登录验证_代码实现(过滤器中过滤请求
- 7_Filter_细节_过滤器拦截方式配置(区分拦截浏览器直接
- 25_案例_验证码_细节处理(removeAttribute)
- 24_案例_验证码_代码实现(equalsIgnoreCase在比较字符
- 13_Response_案例4_验证码_代码实现(随机验证码、干扰