Laravel 8 - Cara mengubah hala /{editable_text} laluan ke /{user} route
P粉986028039
P粉986028039 2024-04-06 17:26:11
0
1
319

Saya telah cuba membuat laluan ubah hala yang membawa saya ke profil pengguna. Laluan ubah hala mestilah rentetan/teks daripada pangkalan data pengguna dan harus ubah hala ke halaman profil pengguna yang sama.

Sebagai contoh, katakan pengguna1 saya mempunyai lajur yang dipanggil "editable_link" dengan nilai "abcd123" dan boleh mengakses profil melalui laluan "www.mywebsite.com/user1", jadi apabila seseorang melawati "www.mywebsite.com / "abcd123", ia harus mengubah halanya ke "www.mywebsite.com/user1"

Saya mencuba pelbagai cara tetapi tiada yang berkesan untuk saya kerana saya baru dalam pengekodan. Bolehkah seseorang memberi saya penyelesaian terbaik?

Ini adalah apa yang ada dalam web saya.php:

 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');

Ini yang saya nak buat:

Route::get('/qr/{editable_link}', function () { return redirect('{user}'); Route::get('/{user}', [UserController::class, 'show'])->name('show'); });

Saya boleh menghantar sebarang kod lain yang anda perlukan, terima kasih.

P粉986028039
P粉986028039

membalas semua (1)
P粉041856955

Anda mesti menyemak dahulu sama ada laluan yang mengandungi nilai pautan_editable wujud dalam pangkalan data. Kemudian anda tidak boleh melakukannya dalam definisi laluan kerana pangkalan data di sana belum siap.

Sudah tentu, anda boleh memilih untuk menyemak kewujudan melalui tempat pangkalan data tersedia (seperti pengawal atau perisian tengah).

Biar ada laluan ini sahaja

Route::get('/{user}', [UserController::class, 'show'])->name('show');

Kemudian dalam kaedahUserControllershowanda perlu mencipta syarat seperti contoh

public function show($user) { // checks if $user parameter is an editable_link that exist in db $userWithEditableLink = User::where('editable_link', $user)->first(); // redirect if above exist to the same route but with, for example, username if ($userWithEditableLink) { return redirect($userWithEditableLink->username); } // do something as, such as // $user = User::where('username', $user)->firstOrFail(); }

Sebagai alternatif, anda boleh mencipta perisian tengah yang turut mengandungi syarat di atas.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!