Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Идем в app\Http\Middleware, создаем файл LocaleMiddleware.php
// LocaleMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use App;
use Request;
class LocaleMiddleware
{
public static $mainLanguage = 'ru';
public static $languages = ['en', 'ru'];
public static function getLocale() {
$uri = Request::path();
$segmentsURI = explode('/',$uri);
if (!empty($segmentsURI[0]) && in_array($segmentsURI[0], self::$languages)) {
return $segmentsURI[0];
} else {
return self::$mainLanguage;
}
}
public function handle($request, Closure $next) {
$locale = self::getLocale();
if($locale) App::setLocale($locale);
return $next($request);
}
}
Далее открываем папку config и редактируем файл app.php
нужно добавить в providers на выше созданный файл
App\Providers\RouteServiceProvider::class,
Последний шаг, открываем routes/web.php
В самый верх добавляем:
Route::get('/', function () {
return redirect('/'. App\Http\Middleware\LocaleMiddleware::$mainLanguage);
});
Route::get('lang/{lang}', function ($lang) {
$referer = Redirect::back()->getTargetUrl();
$parse_url = parse_url($referer, PHP_URL_PATH);
$segments = explode('/', $parse_url);
if (in_array($segments[1], App\Http\Middleware\LocaleMiddleware::$languages)) {
unset($segments[1]);
}
array_splice($segments, 1, 0, $lang);
$url = Request::root().implode("/", $segments);
if(parse_url($referer, PHP_URL_QUERY)){
$url = $url.'?'. parse_url($referer, PHP_URL_QUERY);
}
return redirect($url);
})->name('lang');
теперь оборачиваем все роуты в обертку
Route::group(['prefix' => App\Http\Middleware\LocaleMiddleware::getLocale()], function(){
Auth::routes();
Route::get('logout','Auth\LoginController@logout');
Route::get('/', 'HomeController@index')->name('home');
});
Ребята помогите вывести данные в таком формате
{"homeTitle":"Главная","menuTitle":"Услуги",
"games":[{"title":"WoWLegions","navigationLinks":[{"destination":"/family/world-of-warcraft","name":"World of Warcraft","iconUrl":"/images/family/images.svg"}]}],
"balance":{"title":"Кошелек","navigationLinks":[{"destination":"/product/balance","name":"Пополнить кошелек","iconUrl":"/images/nav-icons/add-balance.svg"},{"destination":"/account/management/claim-code.html","name":"Использовать карту предоплаты","iconUrl":"/images/nav-icons/add-pre-paid-card.svg"},{"destination":"/account/management/transaction-history.html","name":"История кошелька","iconUrl":"/images/nav-icons/balance-history.svg"}]},
"services":{"title":"Дополнительные услуги","navigationLinks":[{"destination":"/product/name-change","name":"Смена имени","iconUrl":"/images/nav-icons/name-change.svg"},{"destination":"/account/management/claim-code.html","name":"Использовать код","iconUrl":"/static/1.12.1/images/nav-icons/add-balance.svg"}]},
"userBalance":{"available":"242.0","availableLocalized":"250 ₽","queued":"0.0","queuedLocalized":"0 ₽","queuedWarning":null,"queuedWarningHelp":null,"queuedWarningHelpUrl":null},"taxonomyLinks":[]}
Возник такой вопрос, как реализовать подобную штуку без всяких заморочек и лишнего кода.
Я использую стандартную функцию регистрации и мне нужно сделать следующее.
Допустим я выбрал логин TestLogin но он занят. Как сделать что бы при регистрации в поле user_id записывалось +1.
То есть если пользователь регистрируется под логином TestLogin то в БД должно быть так:
name=TestLogin, user_id=1
name=TestLogin, user_id=2
name=TestLogin, user_id=3
// Route
Route::resource('fragment', 'AdminController', ['parameters' => ['fragment' => 'fragment']);
// Link
{{ route('admin.show', ['fragment' => $item->fragment) }}
Пример. Для сути.
Всем привет.
Сделал локализацию сайта по данному мануалу
И возник вопрос.
Язык по умолчанию
public static $mainLanguage = 'ru';
Как сделать, что бы при выходе или входе пользователя оставался тот язык, который он выбрал. После авторизации выкидывает на язык указанный в
public static $mainLanguage = 'ru';
Спасибо.
Попробуйте создайте новый аккаунт, если ошибка повторится, то дело в самом laravel, если нет, то значит не верные данные.
Напишите мне на почту job@gustos.biz
Можно удалить тему.