Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.08.2020 02:17:37

Валидация данных. Laravel 5.2

Привет!

Пишу обработку сервером ajax-запроса. Ларка дает возможность провалидировать данные еще до передачи их в контроллер в слое Request. Очень удобно. Собственно, написал тестовый код и столкнулся с одной проблемой.

namespace App\Http\Requests;

use App\Http\Requests\Request;

class SomeRequest extends Request
{
    public function authorize() 
    {
        return auth()->check();
    }

    public function rules() 
    {
	return [
		'name' => 'required',
	];
    }

    public function messages() 
    {
	return [
		'name.required' => 'Заполни поле, дружок!!',
	];
    }
}

Через ajax передаю не форму, а заранее собранный из инпутов объект в формате json.

$.ajax({
				
	url: "[url]https://v-pope-kaki.net[/url]",
					
	async: false,
					
	headers: { 'X-CSRF-Token': $('#token').val() },
					
	type: "POST",
					
	cache: false,
					
	data: JSON.stringify(object), // {name: 'lupa pupkins'}
					
	dataType: 'json',

	...

});

Проблема в том, что указанное в правилах поле существует в передаваемом объекте, но валидатор его не видит и выдает ошибку, что, мол, давай, вводи-ка поле, дальше не пущу. Очень не хочется отсылать именно форму. У меня проводится первичная валидация еще на стороне клиента в js прямо перед ajax-запросом. По мне логично передавать именно законченный объект вместо сухой формы. Есть способ как-то это обойти?

Изменено Remover_4000_pro (04.08.2020 02:46:32)

Не в сети

#2 07.08.2020 11:47:19

Re: Валидация данных. Laravel 5.2

Не пойму, зачем конвертить в строку, а потом пытаться на стороне сервера поймать из нее name(разумеется его там не будет)
М.б. сразу воспользоваться методом

$.post( "test.php", { name: "John", time: "2pm" } );

Но настоящие джыдаи сейчас не используют jquery вообще, все нужные заголовки он подставляет сам.

            axios
                .post('/ajax/url', {
                    name: "sometext",
                })
                .then(r => this.afterPost(r.data))

Не в сети

Подвал раздела