Laravel 生成 url,默认值
官网是这样写的
对于某些应用程序,你可能希望为某些 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 协议》,转载必须注明作者和本文链接
你随便的这个控制器要走
locale
中间件才行。解决了:
路由: