При выполнении запроса Inertia, отличного от GET
, через <inertia-link>
или вручную, обязательно всегда отвечайте правильным ответом Inertia.
Например, если Вы создаете нового пользователя, пусть Ваша конечная точка "store" вернет перенаправление обратно на стандартную конечную точку GET
, такую как страница индекса пользователя.
Inertia автоматически последует за этим перенаправлением и соответствующим образом обновит страницу. Вот упрощенный пример.
class UsersController extends Controller
{
public function index()
{
return Inertia::render('Users/Index', [
'users' => User::all(),
]);
}
public function store()
{
User::create(
Request::validate([
'name' => ['required', 'max:50'],
'email' => ['required', 'max:50', 'email'],
])
);
return Redirect::route('users.index');
}
}
Обратите внимание: при перенаправлении после запроса PUT
, PATCH
или DELETE
Вы должны использовать код ответа 303
, иначе последующий запрос не будет рассматриваться как GET
запрос. Редирект 303
аналогичен перенаправлению 302
, за исключением того, что последующий запрос явно заменяется GET
запросом.
Если Вы используете один из наших официальных серверных адаптеров, перенаправления будут автоматически преобразованы.
Иногда в рамках запроса Inertia необходимо перенаправить на внешний веб-сайт или даже на другую конечную точку, не являющуюся Inertia. Это возможно с помощью инициированного сервером посещения window.location
.
return Inertia::location($url);
Это сгенерирует ответ 409 Conflict
, который включает целевой URL-адрес в заголовке X-Inertia-Location
. На стороне клиента Inertia обнаружит этот ответ и автоматически выполнит посещение window.location = url
.