J'ai essayé de créer un itinéraire de redirection qui me mène à un profil utilisateur. L'itinéraire de redirection doit être une chaîne/texte provenant de la base de données utilisateur et doit rediriger vers la même page de profil utilisateur.
Par exemple, disons que mon utilisateur1 a une colonne appelée "editable_link" avec une valeur de "abcd123" et peut accéder au profil via l'itinéraire "www.mywebsite.com/user1", donc quand quelqu'un visite "www.mywebsite.com / "abcd123", cela devrait le rediriger vers "www.mywebsite.com/user1"
J'ai essayé de nombreuses façons mais rien n'a fonctionné pour moi car je suis nouveau dans le codage. Quelqu'un peut-il me donner la meilleure solution ?
Voici ce qu'il y a dans mon 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');
Voici ce que je veux créer :
Route::get('/qr/{editable_link}', function () { return redirect('{user}'); Route::get('/{user}', [UserController::class, 'show'])->name('show'); });
Je peux publier tout autre code dont vous avez besoin, merci.
Vous devez d'abord vérifier si une route contenant la valeur editable_link existe dans la base de données. Ensuite, vous ne pouvez pas le faire dans la définition de l'itinéraire car la base de données n'y est pas encore prête.
Bien sûr, vous pouvez choisir de vérifier l'existence via l'endroit où la base de données est disponible (comme un contrôleur ou un middleware).
Qu'il n'y ait que cette route
Ensuite, dans la méthode
UserController
show
, vous devez créer la condition comme exempleVous pouvez également créer un middleware qui contient également les conditions ci-dessus.