Скажите Laravels Validator, где искать массив запросов проверки - PullRequest
0 голосов
/ 28 октября 2019

Если я проверяю свою форму веб-интерфейса с помощью axios с помощью параметра «data», это не проходит проверку в моем приложении для внутреннего интерфейса.

axios.post('http://example.com/', {
  'Content-Type': 'multipart/form-data',
  Accept: 'application/json',
  data: {
      email: 'email@email.com',
      password: '12345678',
    }
}).then(res => console.log(res))
  .catch(err => console.log(err));

Поэтому здесь я использую параметр «data» для проверки.

$request->validate([
        'email' => 'required|string|email',
        'password' => 'required|string'
]);

Возвраты: требуется 422 адреса электронной почты требуется пароль.

Вот как форматируется запрос:

{Content-Type: "application/json", data: {email: "email@email.com", password: "12345678"}}

Однако, если я отправлю форму таким образом сAxios это проверяет, и я вошел в систему:

'Content-Type': 'multipart/form-data',
'Accept': 'application/json',
'email': 'email@email.com',
'password': '12345678',

Итак, мой вопрос, как сказать валидатору заглянуть внутрь объекта данных?

РЕДАКТИРОВАТЬ 1: По запросу dd($request->attributes); возвращает:

ParameterBag {#53
  #parameters: []
}

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Это потому, что вы добавляете headers как data в запросе axios. Ваш запрос должен выглядеть следующим образом:

const headers = {
    'Accept': "application/json",
    'Content-Type': "application/json",
};

let data: {
      email: 'email@email.com',
      password: '12345678',
    };

axios.post('http://example.com/',data, {headers:headers})
            .then( (response) => {
                //do the stuff
            })
            .catch( (error) => {
                // do the stuff
            });

Note: axios Функция post принимает сначала argument как url, второй как data и третий как config (headers etc), в то время как в вашем случае высмешивают заголовок с данными. Вы можете прочитать больше о axios здесь

Спасибо.

0 голосов
/ 28 октября 2019

Проблема в том, зачем вам добавлять data в ваши аксиосы?

Если вы добавляете data, тогда ваша проверка должна быть такой:

$request->validate([
    'data.email' => 'required|string|email',
    'data.password' => 'required|string',
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...