官網是這樣寫的
對於某些應用程式,你可能希望為某些 URL 引數的請求範圍指定預設值。例如,假設有些路由定義了 {locale}
引數:
Route::get('/{locale}/posts', function () {
//
})->name('post.index');
每次都通過 locale 來呼叫輔助函式 route 也是一件很麻煩的事情。 因此,使用 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);
}
}
我的操作
路由web.php
Route::get(‘{locale}/posts’, function () {
return “ceshi”;
})->name(‘post’)->middleware(‘locale’);
中介軟體
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\URL;
class SetDefaultLocaleForUrls
{
public function handle($request, Closure $next)
{ URL::defaults([‘locale’ => “en”]);
return $next($request);
}}
註冊中介軟體
‘locale’=>\App\Http\Middleware\SetDefaultLocaleForUrls::class
隨便一個控制器
public function root()
{
echo route(“post”);
}
執行報錯。
各路大神,你們是怎樣解決的呢?
本作品採用《CC 協議》,轉載必須註明作者和本文連結