Почему мои маршруты терпят неудачу после вызова функции уничтожения?

#php #laravel #web #eloquent #routes

Вопрос:

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

Функция уничтожения:

 public function destroy($locale, $id)
{
    Component::where('id', $id)->delete();

    $locale = App::getLocale();

    return route('components.index', compact('locale'));
}
 

Индексная функция (ссылка выше):

 public function index($locale)
{
    parent::lang($locale);

    $components = Component::paginate(10);

    return view('production/index-component', compact('components'));
}
 

Соответствующий маршрут:

 Route::group(['prefix' => '{locale}'], function() {
    Route::resource('/components', ComponentController::class);
});
 

Результирующий URL

Функция уничтожения работает иначе, записи удаляются (при переходе на правильный URL). В идеале это должно просто перенаправить пользователя обратно в {locale}/components .

Заранее спасибо!

Комментарии:

1. Добро пожаловать в SO … вы возвращаете URL-адрес в виде строки, а не ответ перенаправления… проверьте документацию для возврата перенаправления laravel.com/docs/8.x/responses#redirecting-named-routes

2. Вау, спасибо! Мне неловко говорить, как долго это меня мучает.

Ответ №1:

Заслуга lagbox,

 public function destroy($locale, $id)
{

    Component::where('id', $id)->delete();

    $locale = App::getLocale();

    return redirect()->route('components.index', ['locale' => $locale]);
}
 

Это сработало отлично.