Есть ли способ вернуть код перенаправления и ответ в конце отправки - PullRequest
0 голосов
/ 17 июня 2020

Я не совсем уверен, что это правильный способ реализации, но моя идея заключалась в том, чтобы дать перенаправление на успешную (или неудачную) отправку с кодом ответа.

Скажем, в этой ситуации мы обновляем существующее сообщение в блоге.

Сначала мы проверим, существует ли запись? В идеале я хотел бы остаться на текущей странице (с кодом ответа), если это не так.

$blogpost = Blogpost::find($id);
if(is_null($blogpost)){
    return response()->json(["message"=>"Record Not Found!"], 404);
}

Во-вторых, я бы проверил, все ли в порядке. На что мы также хотели бы остаться на текущей странице (с кодом ответа), если он неверен.

$valid=['title' => 'required|min:3',
        'msg'=>'required|min:3',
];

$valida = Validator::make($request->all(), $valid);
if($valida->fails()){return response()->json($valida->errors(), 400);}

Наконец, когда все пойдет, я хотел бы иметь перенаправление (с ответом 200 code).

$blogpost->update($request->all());
return redirect('/blogposts')->with('success', 'Post Has Been Updated!');

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

1 Ответ

0 голосов
/ 17 июня 2020

Я реализую это (особенно для 302) следующим образом:

return response(json(["message"=>"Record Not Found!"]), 404);

, что имеет смысл только в том случае, если вы обращаетесь к действию $ this контроллера через запрос AJAX. Далее:

if($valida->fails()){return response(json($valida->errors()), 400);}

Но перенаправление с ответом json так, как вам хотелось бы, не сработает. Это URL-адрес (маршрут), на который вы перенаправляетесь. Вы можете захватить данные с помощью ?id=1 et c, что приведет к «уродливым» URL-адресам. Если ваш маршрут не установлен на Route::get('blogposts/id?')->...

return redirect()->to('/blogposts', 200)->with('id', $blogpost->id);
...