加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:49:48 所属栏目:大数据 来源:网络整理
导读:有没有办法在验证发生之前修改表单请求类中的输入字段? 我想修改一些输入日期字段,如下所示,但它似乎不起作用. 当我将$this- start_dt输入字段设置为2016-02-06 12:00:00和$this- end_dt设置为2016-02-06 13:00:00我仍然会收到验证错误“end_dt必须在之后st
有没有办法在验证发生之前修改表单请求类中的输入字段?

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

当我将$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时,输入请求值不会更改.

public function rules()
{
    if ($this->start_dt){
        $this->start_dt = Carbon::createFromFormat('d M Y H:i:s',$this->start_dt . ' ' . $this->start_hr . ':'. $this->start_min . ':00');
    }

    if ($this->end_dt){
        $this->end_dt = Carbon::createFromFormat('d M Y H:i:s',$this->end_dt . ' ' . $this->end_hr . ':'. $this->end_min . ':00');
    }

    return [
        'start_dt' => 'required|date|after:yesterday','end_dt' => 'required|date|after:start_dt|before:' . Carbon::parse($this->start_dt)->addDays(30)            
    ];
}

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

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

您的请求中的示例

/**
 * Modify the input values
 *
 * @return void
 */
protected function prepareForValidation() {

    // get the input
    $input = array_map('trim',$this->all());

    // check newsletter
    if (!isset($input['newsletter'])) {
        $input['newsletter'] = false;
    }

    // replace old input with new input
    $this->replace($input);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读