【发布时间】:2019-04-04 06:11:49
【问题描述】:
在我的应用程序中,我提供了前缀,例如en 我的网站加载为 domain.xyz/en 现在可以正常工作,但我需要添加的是:
当用户访问没有任何前缀的网站时强制重定向:
例如用户尝试加载domain.xyz 此域必须第一次重定向到domain.xyz/en(默认前缀)才能加载站点,但稍后如果用户选择其他语言,则可以将其设置为该值。 r.g. domain.xyz/es
问题
我应该在中间件中写什么来实现重定向?
我试过用:
1-$request->route().parameters();
and
2-$request->route().getPrefix();
运气不好。
code
<?php
namespace App\Http\Middleware;
use Closure;
class PrefixMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
更新
这是我的web.php 的样子:
$route_prefix = \Config::get('app.route_prefix');
Route::group(['middleware' => 'verified', 'prefix' => $route_prefix.'/'], function () use ($route_prefix){
Route::get('/', 'HomeController@welcome')->name('homepage');
});
更新 2
现在根据 cmets 的建议,我有类似的东西:
public function handle($request, Closure $next)
{
$prefix = \Config::get('app.route_prefix');
\App::setLocale($prefix);
return $next($request.'/'.$prefix);
}
然后它返回:
Call to a member function setUserResolver() on string
【问题讨论】:
-
@LimKeanPhang 我的
web.php文件Route::group(['middleware' => 'verified', 'prefix' => $route_prefix.'/'], function () use ($route_prefix){ -
在中间件之前添加这个,然后返回 \App::setLocale(\'en')); ?添加使用App;还有
-
@LimKeanPhang 更新了我的问题
-
这是另一个问题,或者是因为我在您提供的代码上没有看到 setUserResolver~@@ 再次尝试检查您的整体程序代码。
标签: php laravel middleware