亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Laravel 8 – So leiten Sie die Route /{editable_text} zur Route /{user} um
P粉986028039
P粉986028039 2024-04-06 17:26:11
0
1
958

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.

P粉986028039
P粉986028039

Antworte allen(1)
P粉041856955

您必須首先檢查數(shù)據(jù)庫中是否存在包含 editable_link 值的路由。那么你就不能在路由定義中執(zhí)行此操作,因?yàn)槟抢锏臄?shù)據(jù)庫尚未準(zhǔn)備好。

當(dāng)然,您可以選擇通過數(shù)據(jù)庫可用的地方(例如控制器或中間件)來檢查是否存在。

讓路由只有這一條

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

然后在 UserController show 方法中,您必須創(chuàng)建條件,例如 example

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();
}

或者,您可以創(chuàng)建一個(gè)也包含上述條件的中間件。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage