Есть ли способ отобразить, какой элемент в массиве не прошел проверку? - PullRequest
2 голосов
/ 16 апреля 2020

Я использую класс расширяет класс FormRequest Laravel. У меня есть входящие массивы, поэтому у меня есть правила, такие как:

    public function rules()
    {
        return [
            'name' => 'required',
            'name.*.value' => 'required',
            'email' => 'required',
            'email.*.value' => 'required|email',
        ];
    }

Обычно, когда я делаю мой Ajax вызов, он возвращает 422 с сообщением, например: Поле name.0.value обязательно.

Я хочу, чтобы это было что-то вроде: требуется {index} -ое имя.

public function messages()
    {
        return [
            'email.*.value.required' => 'Recipient email field is required',
            'email.*.value.email' => 'Wrong e-mail format',
        ];
    }

Можно ли каким-либо образом включить * в сообщение? Или я должен обработать это с JQuery? Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2020

Попробуйте использовать l oop так:

public function messages() {

    $messages = [];

    foreach ($this->get('email') as $key => $val) {
        $messages["email.$key.value.required"] = "email $key is required";
        $messages["email.$key.value.email"] = "email $key is wrong e-mail format";
    }
    return $messages;
}
0 голосов
/ 16 апреля 2020
    $rules = [
        'name' => 'required',
        'password' => 'required',
        'email' => 'required|email'
    ];
    $validator = Validator::make($request->only('name','password','email'), $rules);
    if ($validator->fails()) {
        $messages = $validator->errors()->messages();
        return response()->json(['status' => 'error', 'messages' => $messages]);}
0 голосов
/ 16 апреля 2020

Я немного изменил код, чтобы соответствовать моему стилю. Это работает так же, если кому-то нравится этот стиль больше. Конечно, ответ TsaiKoga безупречен, и с ним можно go

public function messages(){

    $messages=[];

    foreach ($this->get('email') as $key => $val) {
        $messages = [
            "email.$key.value.required" => "$key th e-mail is required",
            "email.$key.value.email" => "$key th e-mail is wrong e-mail format",
            "name.$key.value.required" => "$key th name is required"];
    }
    return $messages;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...