Laravel + Вью. Проблемы с кэшированием (на самом деле, просто зарезервированное имя переменной) - PullRequest
0 голосов

Я создаю простое веб-приложение REST API Laravel + Vue.
В компоненте Vue у меня есть метод с запросом API.
Я упростил это, чтобы увидеть суть проблемы:

phpValidate() {

axios
    .post("api/validate", self.programmer)
    .then(function(response) {

        console.log(response.status); 

    });
}

В контроллере у меня есть метод validateIt(), который обрабатывает этот "api/validate" запрос.
Возвращает:

return array('status' => $status, 'data' => $data);

$status может быть равно 200 или 422, в зависимости от входных данных.

Проблема в том, что с какого-то момента он начал возвращать $status из 200 всегда.
Даже если я удаляю весь код из метода validateIt() и просто оставляю две строки:

$status = 422;
return array('status' => $status);

Я все еще получаю 200. Если я удаляю весь метод в контроллере, он выдает внутреннюю ошибку сервера 500.
Итак, маршрут и название функции верны. Когда я кладу его обратно, я могу написать там все, что захочу, у него нет смысла - он все равно возвращает 200!

Если я использую отладчик, я вижу, что в конце метода validateIt() он возвращает 422.
Но когда я получаю ответ в phpValidate(), я снова вижу 200.
Невероятно!

Я пытался:

npm run dev

и

php artisan cache:clear

не помогает!

Также я пытался перезагрузить сервер и использовать разные браузеры, не помогает.

1 Ответ

0 голосов

На самом деле, это не проблема кеширования. Похоже, имя переменной STATUS зарезервировано. Не имеет значения, какое значение вы даете $ status в методе контроллера. $ Status всегда содержит фактический статус запроса, и вы не можете изменить его вручную. Даже если метод пуст, он вернет $ status 200, потому что запрос был успешным.

Решение состоит в том, чтобы использовать другое имя переменной для ваших собственных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...