【发布时间】:2022-01-16 01:43:53
【问题描述】:
在我的刀片表单中,我有一个要求输入小时值的输入字段,比如说input_stage_hour
我试图在验证后将其转换为分钟,但在它到达我的控制器之前...在我的表单请求中,我使用 passedValidation 方法将小时转换为分钟,然后在我的控制器中我正在填充我的模型使用$request->validated()
问题是,它是通过原始值而不是转换后的值。
我的精简表格请求如下;
public function rules()
{
return [
'input_stage_hour' => ['required', 'numeric', 'integer'],
];
}
protected function passedValidation()
{
$this->replace([
'input_stage_hour' => intval($this->input_stage_hour) * 60,
]);
}
如果我将2 之类的值传递给input_stage_hour,然后在我的控制器中传递dd($request->validated()),它仍然显示值2 而不是120
【问题讨论】:
-
如果你想修改数据然后使用 $request->all().$request->validated() 从请求中获取经过验证的数据。
-
我不建议修改
FormRequest内的输入,因为您正在混淆代码。FormRequest的职责是验证数据,而不是转换数据。您可以使用中间件或您想要的任何其他层,但它会在它到达FormRequest之前。为什么要验证该值,然后对其进行转换并将其提供给控制器?让控制器处理该转换,因为它应该是......
标签: php laravel laravel-validation