首頁 > 後端開發 > php教程 > 使用URL默認來簡化Laravel中的路由參數

使用URL默認來簡化Laravel中的路由參數

James Robert Taylor
發布: 2025-03-06 01:41:09
原創
365 人瀏覽過

在Laravel應用程序中管理URL參數,尤其是那些具有多種語言或複雜路由模式的那些

Streamlining Route Parameters in Laravel Using URL Defaults

可以重複。 Laravel通過URL默認提供了優雅的解決方案,使您可以為URL參數設置範圍範圍的默認值。讓我們探索這個功能強大的功能的實現。

>

#Underding 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([
            &#39;locale&#39; => $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(&#39;{locale}/{currency}&#39;)->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(&#39;products.index&#39;) }}">{{ __('All Products') }}</a>
    <a href="{{ route(&#39;products.show&#39;, $product) }}">{{ $product->name }}</a>
</nav>

<!-- Only override when needed -->
<a href="{{ route(&#39;products.index&#39;, [&#39;currency&#39; => 'EUR']) }}">
    {{ __('View in Euros') }}
</a>
登入後複製

此實現提供乾淨,可維護的路由,同時自動處理您的應用程序的用戶首選項。

以上是使用URL默認來簡化Laravel中的路由參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板