Jak získat parametr z adresy URL v systému Laravel
V systému Laravel je získávání parametrů z adresy URL běžnou úlohou, zejména při práci s trasami, kontroléry a požadavky. Ať už se jedná o parametr trasy (např, /users/{id}) nebo parametr dotazu (např, /users?id=5), Laravel poskytuje čisté a výrazné způsoby jejich načítání.
Získání parametrů trasy
Parametry trasy jsou definovány v routes/web.php or routes/api.php soubor. Například:
Route::get('/users/{id}', [UserController::class, 'show']);
Na této trase, {id} je dynamický parametr, který Laravel automaticky předává metodě kontroléru. Uvnitř UserController:
use Illuminate\Http\Request; public function show(Request $request, $id){ // You can directly use the parameter $user = User::findOrFail($id); // You can also retrieve it from the request $idFromRoute = $request->route('id'); return view('users.show', compact('user', 'idFromRoute'));}
Pokud potřebujete pouze parametr a ne Request instance:
public function show($id){ $user = User::findOrFail($id); return view('users.show', compact('user'));}
Tip: Při kombinaci vstřikování závislostí (jako např.
Request) a parametry trasy, vždy umístěte parametry trasy po injektované závislosti.
Parametry trasy můžete získat také pomocí globálního request() helper:
$id = request()->route('id');
Získání parametrů dotazu
Parametry dotazu se zobrazují za ? v adrese URL, například /users?status=active.
Laravel nabízí několik způsobů, jak je získat:
Použití instance Request:
use Illuminate\Http\Request; public function index(Request $request){ // Get 'status' query parameter $status = $request->query('status', 'active'); // default value if missing $users = User::where('status', $status)->get(); return view('users.index', compact('users', 'status'));}
Použití request() helper:
$status = request()->query('status');
Nebo zkrácená verze:
$status = request('status');
Získání všech parametrů dotazu jako asociativního pole:
$params = request()->query();
Poznámka:
query()získává hodnoty pouze z řetězce dotazu (parametry GET), zatímco funkceget()může také hledat v datech POST. Použijtequery()pro čistší záměr.
Získání parametrů v šablonách Blade
K parametrům můžete přistupovat také přímo v šablonách Blade.
Parametr trasy:
{{ request()->route('id') }}
Parametr dotazu:
{{ request('status') }}
Získávání parametrů v middlewaru
Pokud potřebujete načíst parametry před spuštěním řadiče, můžete to provést v middlewaru:
public function handle($request, Closure $next){ $id = $request->route('id'); $status = $request->query('status'); // Optionally modify the request $request->merge(['source' => 'middleware']); return $next($request);}
Souhrn
| Typ | Příklad adresy URL | Metoda Laravel |
|---|---|---|
| Parametr trasy | /users/15 |
$request->route('id') or $id argument |
| Parametr dotazu | /users?status=active |
$request->query('status') or request('status') |
Laravel umožňuje jednoduché a konzistentní načítání parametrů tras i dotazů napříč kontroléry, middlewarem a pohledy. Dodržování těchto oficiálních vzorů zajistí, že váš kód bude čistý, předvídatelný a v souladu s osvědčenými postupy Laravel.