[英]Laravel Form Request Add Custom Variable After Validation
這是我的表單請求代碼,我想在驗證成功后添加新變量,這樣我就可以在我的控制器上訪問該變量:
class CouponRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'start_year' => 'required',
'start_month' => 'required',
'start_day' => 'required',
'start_time' => 'required',
'finish_year' => 'required',
'finish_month' => 'required',
'finish_day' => 'required',
'finish_time' => 'required',
];
}
public function afterValidation()
{
$this->start_date = Carbon::create( $this->start_year, $this->start_month, $this->start_day );
}
}
所以在驗證沒有錯誤后,我可以在我的控制器上調用這個實例:
$request->start_date;
我可以這樣做嗎?
在您的表單請求中使用函數prepareForValidation()
protected function prepareForValidation(): void
{
$this->merge([
'start_date' => Carbon::now()
]);
}
干杯!
你可以這樣做
public function afterValidation()
{
$this->request->add([
'start_date' => Carbon::create($this->start_year, $this->start_month, $this->start_day)
]);
}
public function validate()
{
parent::validate();
$this->afterValidation();
}
然后訪問控制器中的屬性
$request->get('start_date');
我在控制器中進行了驗證。 該方法有一個“Request $request”參數。 我有一個我這樣做:
$input = $request->all();
$input['my_new_field] = 'the_data';
我在成功請求操作后使用此方法。
來源: 50116187/1101038
public function withValidator(Validator $validator)
{
if ( $validator->fails() ) {
\Log::info('Error! No Manipulation!');
}else{
$this->merge([
'custom' => 'Test Manipulation!'
]);
\Log::info('Success Manipulation!');
}
}
以上所有方法都有效,但 IMO 我會覆蓋表單請求類中的passedValidation
方法。 在通過驗證檢查后調用此方法,從而保持數據清潔。
例如。
public function passedValidation()
{
$this->merge([
'start_date' => Carbon::create( $this->start_year, $this->start_month, $this->start_day )
]));
}
如果您現在轉儲數據,您還應該看到新的 start_date 值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.