Laravel: обновление данных с помощью проверки запросов не обновляет данные - PullRequest
1 голос
/ 07 ноября 2019

Я работаю над обновлением данных в конечной точке API. Как, я использую проверку запроса формы, чтобы отделить проверку от контроллера.

Это прекрасно работает с запросом хранилища.

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

As, данные уже сохранены в базе данных. Когда я отправляю запрос на обновление данных .., который должен вернуть обновленные данные. Но он не возвращается.

Нужна помощь, чтобы решить эту проблему.

Данные JSON в теле:

{
    "title": "Question Changed 2"
}

Текущий ответ:

{
  "question_type": [
    "Question Type is Required!"
  ],
  "question": [
    "Question is Required!"
  ],
  "is_required": [
    "Is Require Value is Required"
  ]
}

QuestionRequest:

public function rules()
    {
        return [
            'question_type' => 'required | min:3 | max:10',
            'title' => 'required | min:5 | max:100',
            'question' => 'required | min:5 | max:255',
            'description' => 'min:10 | max:255',
            'is_required' => 'required',
        ];
    }

Обновление:

public function update(QuestionRequest $request, Question $question)
    {
        $question = $question->update($request->all());

        return response()->json($question, 200);
    }

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Вам необходимо использовать иногда правило проверки, как упомянуто в Документах

В некоторых ситуациях вам может потребоваться выполнить проверки проверки для поля, только если это поле присутствуетво входном массиве. Чтобы быстро это сделать, добавьте правило иногда в свой список правил

. Вы можете изменить массив rules на

        return [
            'question_type' => 'sometimes|required | min:3 | max:10',
            'title' => 'sometimes|required | min:5 | max:100',
            'question' => 'sometimes|required | min:5 | max:255',
            'description' => 'sometimes|min:10 | max:255',
            'is_required' => 'sometimes|required',
        ];

Таким образом, проверка только для этих полей будетзапустить, если они присутствуют в запросе.

0 голосов
/ 07 ноября 2019

Если кому-то нужно решение, я обновляю ответ:

Я просто поместил условную логику в Правила проверки запросов следующим образом. Добавлено иногда в соответствии с @ ascsoftw для обновления данных.

public function rules()
    {
        switch($this->method())
        {
            case 'POST':
                {
                    return [
                        'question_type' => 'required | min:3 | max:10',
                        'title' => 'required | min:5 | max:100',
                        'question' => 'required | min:5 | max:255',
                        'description' => 'min:10 | max:255',
                        'is_required' => 'required',
                    ];
                }
                break;

            case 'PUT':
                {
                    return [
                        'question_type' => 'sometimes | required | min:3 | max:10',
                        'title' => 'sometimes | required | min:5 | max:100',
                        'question' => 'sometimes | required | min:5 | max:255',
                        'description' => 'sometimes | min:10 | max:255',
                        'is_required' => 'sometimes | required',
                    ];
                }
                break;

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