Перенаправления

При выполнении запроса 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');
    }
}

303 код ответа

Обратите внимание: при перенаправлении после запроса 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.