Ich habe versucht, eine Weiterleitungsroute zu erstellen, die mich zu einem Benutzerprofil führt. Die Umleitungsroute sollte eine Zeichenfolge/ein Text aus der Benutzerdatenbank sein und auf dieselbe Benutzerprofilseite umleiten.
Angenommen, mein Benutzer1 hat eine Spalte namens „editable_link“ mit dem Wert „abcd123“ und kann über die Route „www.meinewebsite.com/benutzer1“ auf das Profil zugreifen, wenn also jemand „www.meinewebsite.com“ besucht / „abcd123“, es sollte ihn zu „www.mywebsite.com/user1“ weiterleiten
Ich habe viele Möglichkeiten ausprobiert, aber nichts hat bei mir funktioniert, da ich neu im Programmieren bin. Kann mir jemand die beste Lösung geben?
Das steht in meiner web.php:
<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Auth; use App\Http\Controllers\UserController; use App\Http\Controllers\VisitController; use App\Http\Controllers\LinkController; use Illuminate\Auth\Events\Verified; Route::get('/', function () { return view('welcome'); }); Route::get('/verified', function () { return view('verified'); }); Auth::routes(['verify' => true]); Route::group(['middleware' => 'auth', 'prefix' => 'dashboard', ], function() { Route::get('/links', [LinkController::class, 'index']); Route::get('/links/new', [LinkController::class, 'create'])->middleware('verified'); Route::post('/links/new', [LinkController::class, 'store']); Route::get('/links/{link}', [LinkController::class, 'edit']); Route::post('/links/{link}', [LinkController::class, 'update']); Route::delete('/links/{link}', [LinkController::class, 'destroy']); Route::get('/qr', [LinkController::class, 'qr']); Route::get('/settings', [UserController::class, 'settings']); Route::get('/settings/edit', [UserController::class, 'edit']); Route::get('/settings/profile', [UserController::class, 'profile']); Route::get('/settings/help', [UserController::class, 'help']); Route::post('/settings/edit', [UserController::class, 'update']); Route::post('/settings/profile', [UserController::class, 'update_avatar']); }); Route::post('/visit/{link}', [VisitController::class, 'store']); Route::get('/{user}', [UserController::class, 'show'])->name('show');
Das möchte ich schaffen:
Route::get('/qr/{editable_link}', function () { return redirect('{user}'); Route::get('/{user}', [UserController::class, 'show'])->name('show'); });
Ich kann jeden anderen Code posten, den Sie benötigen, danke.
您必须首先检查数据库中是否存在包含 editable_link 值的路由。那么你就不能在路由定义中执行此操作,因为那里的数据库尚未准备好。
当然,您可以选择通过数据库可用的地方(例如控制器或中间件)来检查是否存在。
让路由只有这一条
然后在
UserController
show
方法中,您必须创建条件,例如 example或者,您可以创建一个也包含上述条件的中间件。