Попытка проверить массивы в 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}
floor.0
является строкой, которая является ключом для этой ошибки. Тем не менее, Javascript видит .
в качестве разделителя свойств. Из-за этого javascript ищет объект floor
с собственностью 0
,
Чтобы это исправить, вы должны будете использовать синтаксис массива для этого ключа.
$("#floor_error").text(data.responseJSON.errors["floor.0"]);
Других решений пока нет …