Laravel:在一个字段中针对相同规则的验证消息

时间:2016-09-28 14:00:16

标签: php laravel validation laravel-request request-validation

我是Laravel的新手,我尝试验证请求。我必须遵循请求类:

namespace App\Http\Requests;

class TestRequest extends FormRequest
{
    protected function rules() 
    { 
        return [
            'group_id' => 'required|exists:groups,id,deleted_at,NULL|exists:group_users,group_id,user_id,' . \Auth::user()->id
        ];
    }
}

我的问题是:

  • 我必须检查该组是否存在且未删除。 这是第一个"存在"规则。
  • 我必须检查当前登录的用户是否属于该组。 第二个"存在"规则。

我的问题是:

  • 如果存在2中的任何一个失败,我怎么知道失败?
  • 我想为这些存在的检查返回不同的错误消息。我该怎么办?
  • 我是否必须为此编写自定义验证?

PS:我使用的是Laravel 5.3

1 个答案:

答案 0 :(得分:1)

我建议编写自定义规则。请查看以下链接,了解将其添加到代码中的位置

https://laravel.com/docs/5.3/validation#custom-validation-rules

Validator::extend('group_check', function($attribute, $value, $parameters, $validator) {
    // Do custom exists check 1;
    $group = Group::where('id', $value)->where('deleted_at', 'null')->first();

    if (!$group) {
        return false;
    }

    // Do custom exists check 2;
});

Validator::replacer('group_check', function($message, $value, $parameters, $validator) {
    // Do custom exists check 1 but instead of returning false, return a custom message

    // Do custom exists check 2 return a custom message
});