【发布时间】:2017-10-14 12:22:35
【问题描述】:
根据文档Setting Default Url Values,我收到了BadMethodCallException 从中间件设置 URL 的默认参数。
这是我的代码
类 SetDefaultLocaleForUrls
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\URL;
class SetDefaultLocaleForUrls
{
public function handle($request, Closure $next)
{
$locale = $request->route()->parameter('locale');
$site_locales = ['en','es','fr','de','zh','tw','nl','pt'];
if(!empty($locale) && !in_array($locale,$site_locales)){
$locale = 'en';
}
if (empty($locale)) {
$locale = 'en'; //default locale
}
if (empty($locale)) {
$locale = 'en'; //default locale
}
URL::defaults(['locale' => $locale]);
return $next($request);
}
}
我的路线配置
Route::get('/{locale?}/about-us', ['as' => 'frontend.about-us.localized', 'uses' => 'Frontend\AboutUsController@index'])->middleware('locale');
我在受保护的 $routeMiddleware 中的中间件配置
'locale' => \App\Http\Middleware\SetDefaultLocaleForUrls::class,
我该如何解决?
【问题讨论】:
标签: php laravel-5.5