【问题标题】:Laravel force prefixLaravel 强制前缀
【发布时间】: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' =&gt; 'verified', 'prefix' =&gt; $route_prefix.'/'], function () use ($route_prefix){
  • 在中间件之前添加这个,然后返回 \App::setLocale(\'en')); ?添加使用App;还有
  • @LimKeanPhang 更新了我的问题
  • 这是另一个问题,或者是因为我在您提供的代码上没有看到 setUserResolver~@@ 再次尝试检查您的整体程序代码。

标签: php laravel middleware


【解决方案1】:

已解决

我使用了this tutorial,它解决了我的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 2011-08-24
    • 2020-07-20
    • 2011-03-02
    • 2017-07-13
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多