В моем приложении я предоставил префикс, например. en мой сайт загружается как domain.xyz/en теперь это работает, но мне нужно добавить следующее:
force redirect when user visits websites without any prefix:
например пользователь пытается загрузить domain.xyz этот домен должен перенаправляться на domain.xyz/en (префикс по умолчанию) в первый раз, чтобы сайт загружался, но позже, если пользователь выберет другой язык, он может быть установлен на него. р.г. 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');
});
Основываясь на предложении комментариев, теперь у меня есть что-то вроде:
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){
Добавьте это в промежуточное ПО перед return \App::setLocale(\'en')); ? Добавить использование приложения; также
@LimKeanPhang обновил мой вопрос
Это еще одна проблема, потому что я не вижу setUserResolver в предоставленном вами коде~ @@ Попробуйте еще раз проверить общий программный код.
Я действительно не думаю, что вам нужен префикс, чтобы установить язык по умолчанию при первом посещении. Подойдет только промежуточное ПО.. Хм.
Промежуточное ПО @LimKeanPhang изменит язык, но не все префиксы к URL-адресам, поэтому мне нужно указать префикс в моих группах, вот почему. (это плохо для сео)
Я предоставил только половину решения. Мой подход был настроен на сеанс, и промежуточное ПО всегда будет получать ключ сеанса, пока пользователь не изменит его. Посмотрим, поймешь ли ты, что я имею в виду :О






Я использовал этот учебник, и это решило мою проблему.