Rumah >pembangunan bahagian belakang >tutorial php >Memperkenalkan Parameter Laluan di Laravel Menggunakan URL Defaults

Memperkenalkan Parameter Laluan di Laravel Menggunakan URL Defaults

James Robert Taylor
James Robert Taylorasal
2025-03-06 01:41:09369semak imbas

Streamlining Route Parameters in Laravel Using URL Defaults

Menguruskan parameter URL dalam aplikasi Laravel, terutamanya yang mempunyai pelbagai bahasa atau corak penghalaan kompleks, boleh menjadi berulang. Laravel menyediakan penyelesaian yang elegan melalui lalai URL, yang membolehkan anda menetapkan nilai lalai aplikasi untuk parameter URL. Mari kita meneroka pelaksanaan ciri yang kuat ini.

#Understanding URL Defaults

URL Default membolehkan anda menentukan nilai lalai global untuk parameter URL merentasi aplikasi anda. Ini membuktikan sangat berharga untuk mengendalikan parameter biasa seperti keutamaan bahasa atau tetapan serantau.

mari kita melaksanakan lalai URL dalam aplikasi berbilang bahasa dengan sokongan mata wang:

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

Daftar middleware di kernel anda:

<!-- Syntax highlighted by torchlight.dev --><?php

namespace App\Http;

class Kernel extends HttpKernel
{
    protected $middleware = [
        // ... other middleware
        \App\Http\Middleware\SetUrlDefaults::class,
    ];
}

Melaksanakan struktur penghalaan:

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

Dalam pandangan anda, anda boleh menjana URL tanpa menyatakan secara jelas lalai:

<!-- 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>

Pelaksanaan ini menyediakan penghalaan yang bersih dan dikekalkan semasa mengendalikan keutamaan pengguna secara automatik merentasi aplikasi anda.

Atas ialah kandungan terperinci Memperkenalkan Parameter Laluan di Laravel Menggunakan URL Defaults. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn