[英]Laravel validation: how to get optional fields in the validated result array?
[英]Laravel replace validation value not showing in validated() array
在我的刀片表單中,我有一個要求輸入小時值的輸入字段,比如說input_stage_hour
我正在嘗試將其轉換為驗證后的幾分鍾,但是在它達到我的Z594C103F2C6E04C3D8AB059F059F031E0C1AZ之前...在我的表單請求中,使用passedValidation
方法將數小時轉換為幾分鍾,然后在我的Z594C103F2C6E.04C6E.04C3D3D8B3D8B13D59F13F13F1BRING $request->validated()
中$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
,然后在我的 controller 中傳遞dd($request->validated())
,它仍然顯示值 2 而不是120
來自 FormRequest 上validated
的方法的數據來自 Validator 而不是 FormRequest 本身。 因此,如果您真的想使用 FormRequest 執行此操作並能夠調用該已validated
方法,則必須調整 Validator 持有的數據或調整已validated
方法。
嘗試調整 Validator 持有的數據的示例:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.