Laravel 生成 url,預設值

iqweqwkeqwewqeqweqweqwe發表於2020-04-24

官網是這樣寫的
對於某些應用程式,你可能希望為某些 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”);
}

執行報錯。

Laravel 生成 url,預設值

各路大神,你們是怎樣解決的呢?

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

相關文章