Laravel: сообщение проверки для одних и тех же правил в одном поле

Я новичок в 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
        ];
    }
}

Моя проблема:

  • Я должен проверить, что группа существует и не удалена. Это первое правило "существует".
  • И я должен проверить, что текущий пользователь, вошедший в систему, является частью группы. Второе правило «существует».

Мой вопрос:

  • Когда какой-либо из двух существующих терпит неудачу, как я узнаю, какой из них потерпел неудачу?
  • Я хочу вернуть другое сообщение об ошибке для этих проверок существования. как мне это сделать?
  • Должен ли я писать пользовательскую проверку для этого?

PS: я использую Laravel 5.3


person Zoltán Fekete    schedule 28.09.2016    source источник
comment
Правило множественного существования вообще работает?   -  person Gaurav Dave    schedule 29.09.2016
comment
Ага, работает нормально   -  person Zoltán Fekete    schedule 30.09.2016


Ответы (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
});
person Brett    schedule 29.09.2016
comment
Ага. Я сделал это таким образом. Расширен валидатор. - person Zoltán Fekete; 30.09.2016