php – Laravel 5.1在表单请求验证之前修改输入

前端之家收集整理的这篇文章主要介绍了php – Laravel 5.1在表单请求验证之前修改输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在验证发生之前修改表单请求类中的输入字段?

我想修改一些输入日期字段,如下所示,但它似乎不起作用.

当我将$this-> start_dt输入字段设置为2016-02-06 12:00:00和$this-> end_dt设置为2016-02-06 13:00:00我仍然会收到验证错误“end_dt必须在之后start_dt”.这意味着当您在rules()函数中更新$this-> start_dt和$this-> end_dt时,输入请求值不会更改.

  1. public function rules()
  2. {
  3. if ($this->start_dt){
  4. $this->start_dt = Carbon::createFromFormat('d M Y H:i:s',$this->start_dt . ' ' . $this->start_hr . ':'. $this->start_min . ':00');
  5. }
  6.  
  7. if ($this->end_dt){
  8. $this->end_dt = Carbon::createFromFormat('d M Y H:i:s',$this->end_dt . ' ' . $this->end_hr . ':'. $this->end_min . ':00');
  9. }
  10.  
  11. return [
  12. 'start_dt' => 'required|date|after:yesterday','end_dt' => 'required|date|after:start_dt|before:' . Carbon::parse($this->start_dt)->addDays(30)
  13. ];
  14. }

注意:start_dt和end_dt是日期选择器字段,start_hr,start_min是下拉字段.因此,我需要通过组合所有字段来创建日期时间,以便我可以进行比较.

从laravel 5.4开始,您可以覆盖ValidatesWhenResolvedTrait的prepareForValidation方法修改任何输入. laravel 5.1应该有类似的东西.

您的请求中的示例

  1. /**
  2. * Modify the input values
  3. *
  4. * @return void
  5. */
  6. protected function prepareForValidation() {
  7.  
  8. // get the input
  9. $input = array_map('trim',$this->all());
  10.  
  11. // check newsletter
  12. if (!isset($input['newsletter'])) {
  13. $input['newsletter'] = false;
  14. }
  15.  
  16. // replace old input with new input
  17. $this->replace($input);
  18. }

猜你在找的Laravel相关文章