Kirill
Я правильно понял, что надо оставить текущий урл, но добавить параметр для языка?
Vladimir
ну я просто себе фичу поставил которая к урлу ещё добавляет язык, поэтому при переключении языка оно язык то переключает но страница после нажатия уходит в глубокий 404
👻
ну если костыльно то берешь текущий и меняешь на ru на en к римеру
Vladimir
Ну а потом нормально работает
Vladimir
Я код выше скинул, там в примере такая муть немного
Kirill
был урл index/test/ok?param=1, после Url::current(['lang' => 'ru']) стал index/test/ok?param=1&lang=ru
Vladimir
url::to(['site/view','slug'=>'hello_world','language'=>'ru']);
Это я умею, я НЕ знаю на каком я сейчас урле чтобы прописать его явно
Dmitriy
Url::curren() ?
👻
а нафига урл знать
👻
контроллер и влюху ты и так знаешь текущий слаг в моделе есть
Niko
Это я умею, я НЕ знаю на каком я сейчас урле чтобы прописать его явно
это неправильный подход Изменять язык правильно в одном месте, например в site/lang, а редиректить уже на предыдущий url можно через Yii::$app->request->referrer какой-нибудь Это единоразовый функционал, он не должен тянуться вслед за каждым контроллером
Vladimir
Он вообще в виде виджета
Vladimir
В блоке справа висит
👻
Yii::$app->controller->route; $this->context->route;
Dmitriy
а задача то какая ?
Niko
ну ok Повесь на него урл site/lang и редиректь на урл, с которого пришел запрос И ставь его куда угодно
Niko
это почему?
Vladimir
а не, может и получиться
Niko
посмотри как индус сделал и переведи на нормальный лад https://www.youtube.com/watch?v=_qNMcJKoEK0&index=51&list=PLRd0zhQj3CBmusDbBzFgg3H20VxLx2mkF
Vladimir
да у меня все сделано, просто с переключением проблема
Vladimir
я не хочу переделывать
Vladimir
https://github.com/codemix/yii2-localeurls
Vladimir
вот эту хрень юзаю
Good
Может кто знает В доках написано, что можно удалять GET параметры, если присвоить им в URL::current() null. Например, я делаю так: $this->url = Url::current(['per-page' => null, 'page' => null, 'sort' => null], true); В результате УРЛ должен получится http://domain.com/category/elektronika а получается http://domain.com/category/elektronika?page=&per-page=&sort= ЧЯДНТ?
Good
Собственно нужно для канонических урлов в метатегах
Vladimir
Url::curren() ?
Работает только с дефолт языком
Good
То есть? А якык тут при чем?
Vladimir
Когда я допустим переключился с дефолт языка на другой, оно подставляет site.ru/en/блаблабла, а когда я хочу ещё раз его переключить, то он берет этот урл и добавляет перед en например ещё ru
Good
Не, с этим норм
Vladimir
?
Good
Зависит от реализации мультиязычных урлов
Good
А у меня нет параметры не хотят убиратся
Good
Гет
Vladimir
чел, мы с тобой тут оба за помощью)
Vladimir
и оба с урлменеджерами
Vladimir
почитай выше
Vladimir
посмотри как индус сделал и переведи на нормальный лад https://www.youtube.com/watch?v=_qNMcJKoEK0&index=51&list=PLRd0zhQj3CBmusDbBzFgg3H20VxLx2mkF
и потом, в том расширении что я взял есть определение языка по параметрам браузера и прочие фичи, а тут ещё индусокод разбирать, как по мне не сильно лучше)
Vladimir
и у него не добавляет к урл язк
PowerAxis
https://m.habrahabr.ru/post/226931/
PowerAxis
Я по этому примеру делал
PowerAxis
Там и логика и виджет описаны
PowerAxis
Посмотри, авось зайдет
Vladimir
Гугл чуток не довел меня до этой статьи :)
Vladimir
http://atoumus.github.io/yii2-i18n.html Делал по этой
Vladimir
Спасибо, попробую по той что ты дал, мне она нравится больше, все описано и подробно
Vladimir
А он умеет определять язык из настроек браузера?
Vladimir
А то чет не вижу
PowerAxis
Кажется да я не помню точно
PowerAxis
А Может и нет ... Но в любом случае поставить один if где-то в сервисе не должно составить труда
Good
Я использую это расширение https://github.com/codemix/yii2-localeurls Методом проб и ошибок при таком конфиге работает: 'urlManager' => [ 'class' => 'codemix\localeurls\UrlManager', 'languages' => array_flip(require(__DIR__ . '/languages.php')), 'enableLanguagePersistence' => false, 'enableLanguageDetection' => false, 'enablePrettyUrl' => true, 'showScriptName' => false, 'baseUrl' => '/', 'normalizer' => [ 'class' => 'yii\web\UrlNormalizer', 'action' => yii\web\UrlNormalizer::ACTION_REDIRECT_TEMPORARY, ], 'rules' => require(__DIR__ . '/routs.php'), ],
Good
Не помню уже почему, но автодетект локали подглючивал, а может и нет ,пробовать нужно
Good
Попробуй конфиг, как у меня
Good
Должно норм работать
Vladimir
Как у тебя выглядит переключатель языка?
Vladimir
Ссылка
Good
Ща
Good
<?php /* @var $this \yii\web\View */ use yii\helpers\Url; switch (\Yii::$app->language) { case 'uk-UA': $lang = 'укр'; break; case 'ru-RU': $lang = 'рус'; break; } $urlUk = Url::current(['language' => 'uk-UA'], true); $urlRu = Url::current(['language' => 'ru-RU'], true); ?> <li class="dropdown" id="lang-switcher"> <a class="dropdown-toggle" href="#" data-toggle="dropdown"><?= $lang ?> <i class="fa fa-caret-down" aria-hidden="true"></i></a> <ul class="dropdown-menu"> <li <?= $lang == 'укр' ? 'style="display:none"' : '' ?> ><a data-url="<?= $urlUk ?>" href="#">укр</a></li> <li <?= $lang == 'рус' ? 'style="display:none"' : '' ?> ><a data-url="<?= $urlRu ?>" href="#">рус</a></li> </ul> </li>
Good
Да, там джаваскриптом переключается, не помню уже, почему
Good
Но суть та же
Vladimir
Воооооооооооот
Vladimir
Это то, что было нужно
Vladimir
Большое тебе спасибо )
Vladimir
Все работает
Vladimir
Люблю этот чат
Good
Не за что)
Good
Мне бы еще кто помог)
Alex
а че у тебя?)
Good
а че у тебя?)
Может кто знает В доках написано, что можно удалять GET параметры, если присвоить им в URL::current() null. Например, я делаю так: $this->url = Url::current(['per-page' => null, 'page' => null, 'sort' => null], true); В результате УРЛ должен получится http://domain.com/category/elektronika а получается http://domain.com/category/elektronika?page=&per-page=&sort= ЧЯДНТ?
Alex
хмм
Alex
дай мне минут 5
Alex
гляну сорцы
Good
Я вот сейчас тоже глядеть буду
Alex
реально странно
Alex
реально фигня какая-то
Alex
я првоерил сорцы
Alex
долдно убивать