在Laravel應用程序中管理URL參數,尤其是那些具有多種語言或複雜路由模式的那些
可以重複。 Laravel通過URL默認提供了優雅的解決方案,使您可以為URL參數設置範圍範圍的默認值。讓我們探索這個功能強大的功能的實現。
URL默認值使您可以在應用程序上定義URL參數的全局默認值。事實證明,對於處理語言偏好或區域設置等通用參數尤其有價值。
>
>讓我們在具有貨幣支持的多語言應用程序中實現URL默認值<!-- Syntax highlighted by torchlight.dev --><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\URL; class SetUrlDefaults { public function handle(Request $request, Closure $next) { URL::defaults([ 'locale' => $request->user()?->preferred_language ?? config('app.locale'), 'currency' => $request->user()?->preferred_currency ?? 'USD' ]); return $next($request); } }
在內核中註冊中間件:
<!-- Syntax highlighted by torchlight.dev --><?php namespace App\Http; class Kernel extends HttpKernel { protected $middleware = [ // ... other middleware \App\Http\Middleware\SetUrlDefaults::class, ]; }
實現路由結構:
<!-- Syntax highlighted by torchlight.dev --><?php use App\Http\Controllers\ProductController; Route::prefix('{locale}/{currency}')->group(function () { Route::get('products', [ProductController::class, 'index']) ->name('products.index'); Route::get('products/{product}', [ProductController::class, 'show']) ->name('products.show'); }); class ProductController extends Controller { public function index() { // URLs will automatically use default locale and currency return view('products.index', [ 'products' => Product::paginate(20), 'categoryUrl' => route('products.category', ['category' => 'electronics']) ]); } public function changePreferences(Request $request, $locale, $currency) { $request->user()->update([ 'preferred_language' => $locale, 'preferred_currency' => $currency ]); return redirect()->back(); } }
在您的視圖中,您可以在不明確指定默認值的情況下生成URL:
><!-- Syntax highlighted by torchlight.dev --><!-- Products listing view --> <nav> <a href="{{ route('products.index') }}">{{ __('All Products') }}</a> <a href="{{ route('products.show', $product) }}">{{ $product->name }}</a> </nav> <!-- Only override when needed --> <a href="{{ route('products.index', ['currency' => 'EUR']) }}"> {{ __('View in Euros') }} </a>
此實現提供乾淨,可維護的路由,同時自動處理您的應用程序的用戶首選項。
以上是使用URL默認來簡化Laravel中的路由參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!