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

Straffungsroutenparameter in Laravel unter Verwendung von URL -Standardeinstellungen

James Robert Taylor
Freigeben: 2025-03-06 01:41:09
Original
363 Leute haben es durchsucht

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);
    }
}
Nach dem Login kopieren

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,
    ];
}
Nach dem Login kopieren

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();
    }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage