Heim >Backend-Entwicklung >PHP-Tutorial >Straffungsroutenparameter in Laravel unter Verwendung von URL -Standardeinstellungen

Straffungsroutenparameter in Laravel unter Verwendung von URL -Standardeinstellungen

James Robert Taylor
James Robert TaylorOriginal
2025-03-06 01:41:09365Durchsuche

Streamlining Route Parameters in Laravel Using URL Defaults

Verwaltung von URL -Parametern in Laravel -Anwendungen, insbesondere solchen mit mehreren Sprachen oder komplexen Routing -Mustern, können sich wiederholen. Laravel bietet eine elegante Lösung über URL-Standardeinstellungen, sodass Sie anwendungsweite Standardwerte für URL-Parameter festlegen können. Lassen Sie uns die Implementierung dieser leistungsstarken Funktionen untersuchen.

#Ververständnis URL -Standardeinstellungen

URL -Standardeinstellungen ermöglichen es Ihnen, globale Standardwerte für URL -Parameter in Ihrer Anwendung zu definieren. Dies erweist sich als besonders wertvoll für die Behandlung gemeinsamer Parameter wie Sprachpräferenzen oder regionalen Einstellungen.

Implementieren wir URL -Standardeinstellungen in einer mehrsprachigen Anwendung mit Währungsunterstützung:

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

Registrieren Sie die Middleware in Ihrem Kernel:

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

namespace App\Http;

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

Implementierung der Routing -Struktur:

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

In Ihren Ansichten können Sie URLs generieren, ohne die Standardeinstellungen explizit anzugeben:

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

Diese Implementierung bietet ein sauberes, wartbares Routing, während die Benutzerpräferenzen in Ihrer Anwendung automatisch behandelt werden.

Das obige ist der detaillierte Inhalt vonStraffungsroutenparameter in Laravel unter Verwendung von URL -Standardeinstellungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn