生成 URL 的 預設值

cyyyrcyx發表於2020-04-17

生成URL => 預設值,
對於某些應用程式,你可能希望為某些 URL 引數的請求範圍指定預設值。例如,假設有些路由定義了 {locale} 引數:
Route::get(‘/{locale}/posts’, function () {
//
})->name(‘post.index’);

使用 URL::defaults 方法定義這個引數的預設值,可以讓該引數始終存在當前請求中。然後就能從 路由中介軟體 呼叫此方法來訪問當前請求:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\URL;

class SetDefaultLocaleForUrls
{
public function handle($request, Closure $next)
{
URL::defaults([‘locale’ => $request->user()->locale]);
return $next($request);
}
}
在App\Http\Kernel的$routeMiddleware中註冊路由中介軟體,
‘setdefaultlocaleforurls’ => \App\Http\Middleware\SetDefaultLocaleForUrls::class,
一旦設定了 locale 引數的預設值,您就不再需要通過輔助函式 route 生成 URL 時傳遞它的值。
在routes中使用,
Route::get(‘/profile’,function(){
echo route(‘post.index’);
})->middleware(‘setdefaultlocaleforurls’);
Route::get(‘/{locale}/post’,function(){
echo ‘{locale}方法的posts’;
})->name(‘post.index’);

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章