如何对2个字段进行一次验证错误

时间:2019-02-09 16:46:01

标签: laravel-5

我有两个用于邮政编码主字段和子字段的字段。

<input type="text" name="postal01">
<input type="text" name="postal02">

我想验证两个字段的数字和大小。 我想做的是将一个字段的验证错误显示为postal_cd,而不是每个字段错误。

我曾在扩展FormRequest的请求类中尝试过。

class MemberRequest extends FormRequest
{
  public function all($keys = null)
  {
    $result = parent::all($keys);

    if($this->filled('postal01') && $this->filled('postal02')) {
        $results['postal_code'] = $this->input('postal01') . $this->input('postal02');
    }
    return $result;
}

但是它没有按我预期的那样工作。

该如何处理?

2 个答案:

答案 0 :(得分:1)

您可以使用验证钩之后。将以下内容添加到您的表单请求中:

/**
* Configure the validator instance.
*
* @param  \Illuminate\Validation\Validator  $validator
* @return void
*/
public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if($validator->errors()->has('postal01') || $validator->errors()->has('postal02')) {
            $validator->errors()->add('postal_cd', 'Please enter a postal code');
        }
    });
}

...然后将其显示在刀片​​上:

{{ $errors->first('postal_cd') }}

答案 1 :(得分:0)

那是我的错字。

class MemberRequest extends FormRequest
{
  public function all($keys = null)
  {
    $result = parent::all($keys);

    if($this->filled('postal01') && $this->filled('postal02')) {
      $result['postal_code'] = $this->input('postal01') . $this->input('postal02');
   // $results['postal_code'] = $this->input('postal01') . $this->input('postal02');
    }
    return $result;
}

返回值应该是$ result。但这是拼写错误$ results ['postal_code']。 可以。