return redirect () не работает после неудачной проверки - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть форма, в которой пользователи могут редактировать информацию о ветви, после того как пользователь отправит эту форму, метод update () проверяет достоверность представленных данных, например, описание должно быть уникальным для каждого подписчика.Хотя проверка работает, она не перенаправляет на точный URL / страницу, которая мне нужна, если проверка не удалась.Он остается в той же форме редактирования.

вот код моего метода update ():

public function update(Request $request, $id)
{
    $description = $request->input('description');
    $message     = $request->input('message');
    $subscriber_id = auth()->user()->subscriber_id;

    $messages = [
        'description.unique' => 'Branch already exists!',
    ];

    $this->validate($request, [
        'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
            return $query->where('subscriber_id', $subscriber_id);
        })
    ], $messages);

    Branch::where('id', $id)->update([
        'description'   => $description,
        'message'       => $message,
    ]);

    return redirect('branches')->with('success', 'Branch info successfully updated!');
}

Примечание: URL формы редактирования - /branch/edit/{id}, а страница, которую я хочу перенаправить после отправки, - /branches.

Моя проверка неверна?Я что-то пропустил?

Спасибо!:)

1 Ответ

0 голосов
/ 12 декабря 2018

Согласно документам laravel вы можете перенаправить на другой маршрут, используя фасад Validator

public function update(Request $request, $id)
{
    $description = $request->input('description');
    $message     = $request->input('message');
    $subscriber_id = auth()->user()->subscriber_id;

    $messages = [
        'description.unique' => 'Branch already exists!',
    ];

    $validator = Validator::make($request->all(), [
        'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
            return $query->where('subscriber_id', $subscriber_id);
        })
    ],
    $messages);

    if ($validator->fails()) {
        return redirect('/branches')
            ->withErrors($validator)
            ->withInput();
    }

    Branch::where('id', $id)->update([
        'description'   => $description,
        'message'       => $message,
    ]);

    return redirect('branches')->with('success', 'Branch info successfully updated!');
}

Убедитесь, что вы используете фасад Validator в начале файла вашего контроллера use Validator;

...