Laravel- Перенаправление пользователей с динамическим параметром через контроллер
Я настроил веб-маршрутизацию, чтобы мой URL отображался в соответствии с localhost/testapp/public/{user}/hello
с этой текущей настройкой
Route::prefix('{user}')->middleware('user')->group(function () {
Route::prefix('welcome')->group(function () {
Route::view('/', 'layout.index')->name('index');
Route::view('thank-you', 'layout.thank-you')->name('thankyou');
});
Route::get('/', 'HomeController@redirect');
});
Route::view('/', 'layout.index')->name('index');
эта строка работает так, как я хотел, но я не смог получить HomeController@redirect
работать так, как я хочу.
Идея заключается в том, чтобы перенаправить пользователя, когда localhost/testapp/public/{user}
вводится, это перенаправит пользователя на страницу localhost/testapp/public/{user}/hello
Вот так выглядит HomeController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function redirect(Request $request)
{
return redirect(['user' => $request, config('settings.default_user')].'/welcome');
}
}
в результате чего, если динамический параметр как-то не получен, я бы использовал пользователя по умолчанию "admin", который хранится в моем файле settings.php в папке config.
1 ответ
Используйте необязательный параметр в файле маршрутов, иначе он покажет 404, если нет{user}
предоставлен
Route::prefix('/{user?}')
Тогда с этим в config/settings.php
<?php
return ['default_user' => 456];
И это в HomeController
public function redirect(Request $request)
{
if (empty($request->user)) {
return redirect(config('settings.default_user') . '/welcome');
} else {
return redirect($request->user . '/welcome');
}
}
Теперь, когда я пытаюсь в браузере
/123
перенаправляет меня на/123/welcome
./
перенаправляет меня на456/welcome
.