在我的刀片表單中,我有一個要求輸入小時值的輸入欄位,可以說 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
uj5u.com熱心網友回復:
來自validatedFormRequest 上該方法的資料來自驗證器而不是 FormRequest 本身。因此,如果您真的想使用 FormRequest 執行此操作并能夠呼叫該validated方法,則必須調整驗證器保存的資料或調整該validated方法。
嘗試調整驗證器持有的資料的示例:
protected function passedValidation()
{
$data = $this->validator->getData();
$this->validator->setData(
['input_stage_hour' => $data['input_stage_hour'] * 60] $data
);
}
如果您想覆寫該validated方法:
public function validated()
{
$data = parent::validated();
return ['input_stage_hour' => $data['input_stage_hour'] * 60] $data;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/379621.html
