【问题标题】:Laravel: validation message for same rules in one fieldLaravel:一个字段中相同规则的验证消息
【发布时间】:2017-02-06 13:36:39
【问题描述】:

我是 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

【问题讨论】:

  • 多个存在规则是否有效?
  • 是的,效果很好

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


【解决方案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
});

【讨论】:

  • 是的。我是这样做的。扩展了验证器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2015-12-20
  • 2015-09-12
  • 2021-08-30
  • 1970-01-01
  • 2017-06-07
相关资源
最近更新 更多