Как вызвать метод класса внутри другого метода?

На сервер приходит запрос от клиента с данными, которые нужно вначале провалидировать.
Этот запрос обрабатывает скрипт, а точнее метод createNewTitles класса WebController.
Этот класс содержит еще один метод validateItems, который вызывается внутри первого метода.

Проблема заключается в том, что если я не использую метод validateItems (т.е. его код прописываю в createNewTitles) то скрипт отрабатывает и отправляет ответ клиенту. Если же использую - то на клиента данные не приходят (никаких исключений не выбрасывает, но и текста ошибки при валидации не приходит).

Ошибка наверное кроется вот в этом вызове $this->validateItems($request, $rules);, но что с ней не так не пойму. Пробовал делать метод validateItems статическим и вызывать его self::validateItems($request, $rules);, что тоже не принесло результата.

class WebController extends Controller {

    public function validateItems($request, $rules) {

        $validator = Validator::make($request->all(), $rules);
            if ($validator->fails()) {
                return response()->json($validator->errors(), 422);
            }

    }

public function createNewTitles(Request $request) {
  
        if ($targetButton == 'add-category') {

            $rules = ['newItem' => 'required|unique:categories,category'];
            $this->validateItems($request, $rules);
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Вы НЕ возвращаете ответ ИЗ контроллера, вы возвращаете ответ в функцию. Так работать не будет, смотрите мой комментарий с выдержкой из доки.
-$this->validateItems($request, $rules);
+return $this->validateItems($request, $rules);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
метод validateItems() может вернуть ответ с ошибками, но вы этот ответ в createNewTitles() не получаете и не пересылаете клиенту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы