簡體   English   中英

Laravel 替換驗證值未顯示在驗證()數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM