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
Lepaskan: 2025-03-06 01:41:09
asal
366 orang telah melayarinya

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);
    }
}
Salin selepas log masuk

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,
    ];
}
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan