Javascript — проверка массива Laravel через ajax: показывается сообщение об ошибке, выбрасывает ошибку

Попытка проверить массивы в laravel через валидацию FormRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class VendorStoreRoom extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'roomtype_id' => 'required',
'price' => 'required|digits_between:1,8',
'amenities' => 'required',

//'max_children' => 'required',
'max_adult' => 'required',
//'capacity' => 'required',
'floor.*' => 'required',
'room_count' => 'min:1|max:50',
'room_number.*' => 'required',
//'room_number' => 'required|max:5',
'image' => 'required',
];
}public function messages()
{
return [
'roomtype_id.required'      => 'Please select a room type',

'price.required'            => 'Price cannot be empty',
'price.digits_between'      => 'Price cannot exceed 8 digits',

'amenities.required'        => 'Atleast select one amenities',

//'max_children.required'     => 'Vendor name cannot be empty',

'max_adult.required'     => 'Maximum adult can not be empty',

//'capacity.required'     => 'Vendor name cannot be empty',

'floor.*.required'     => 'Please select a floor',

'room_count.min'     => 'Room count cannot be empty',
'room_count.max'     => 'Room count cannot exceed 50',

'room_number.*.required'     => 'Room number cannot be empty',
//'room_number.max'     => 'Room number cannot exceed 5 characters',

'image.required'     => 'Atleast select one image',
/*'image.*.mimes'     => 'Image Must be JPEG, JPG or PNG',
'image.*.min'     => 'Image size must be more than 10 kb',
'image.*.max'     => 'Image size cannot exceed 300 mb', */];
}
}

Это ответ, который я получил:

{"message":"The given data was invalid.","errors":{"roomtype_id":["Please select a room type"],"price":["Price cannot be empty"],"amenities":["Atleast select one amenities"],"image":["Atleast select one image"],"floor.0":["Please select a floor"],"room_number.0":["Room number cannot be empty"]}}

Я ловлю эти ошибки в jquery и делаю, как показано ниже:

Это отлично работает: $("#amenities_error").text(data.responseJSON.errors.amenities);

Но не это: $("#floor_error").text(data.responseJSON.errors.floor.0);
Как я могу достичь этого?

Есть ли что-нибудь, что я могу сделать, как data.responseJSON.errors. «floor.0» или data.responseJSON.errors. {floor.0}

1

Решение

floor.0 является строкой, которая является ключом для этой ошибки. Тем не менее, Javascript видит . в качестве разделителя свойств. Из-за этого javascript ищет объект floor с собственностью 0,
Чтобы это исправить, вы должны будете использовать синтаксис массива для этого ключа.

$("#floor_error").text(data.responseJSON.errors["floor.0"]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]