Передача параметра в layout как правильно?
Передача параметра в layout как правильно?
В layout'e в меню есть возможность выбрать страну(dropdown), и соответствующие ссылки на поддомены.
Вопрос в том как правильно отобразить текущую страну (выбранную), пока что на ум пришло только указывать в контроллерах $this->params['country'] = выбранная страна.
В layout'e выводить $this->params['country'] установленный параметр...
Вопрос в том насколько это правильно, ну и для каждого контроллера прописывать этот параметр с поиском в БД тоже не совсем удобно?
Вопрос в том как правильно отобразить текущую страну (выбранную), пока что на ум пришло только указывать в контроллерах $this->params['country'] = выбранная страна.
В layout'e выводить $this->params['country'] установленный параметр...
Вопрос в том насколько это правильно, ну и для каждого контроллера прописывать этот параметр с поиском в БД тоже не совсем удобно?
Re: Передача параметра в layout как правильно?
Если у вас поддомены, то легко можно понять страну по домену, нет? В любом случае сделайте отдельный метод для получения текущей страны (с кешированием), вызывайте по мере надобности.
Re: Передача параметра в layout как правильно?
виджет сделать с выбором страны ... и соответственно он же и будет подтягивать текущую страну ...
Re: Передача параметра в layout как правильно?
что в поддомене? код страны?
не по парсингу url, а по настройке роутинга, поддомен - это будет просто get параметр
не по парсингу url, а по настройке роутинга, поддомен - это будет просто get параметр
Re: Передача параметра в layout как правильно?
Сложно говорить что-то конкретно без деталей.
Код: Выделить всё
$hostMap = [
'www.example.com' => 'ru',
'example.com' => 'ru',
'en.example.com' => 'en',
];
$hostName = Yii::$app->getRequest()->getHostName();
$language = ArrayHelper::getValue($hostMap, $hostName, 'ru');
Код: Выделить всё
'rules' => [
'http://<language:\w+>.example.com/posts' => 'post/index',
]
Re: Передача параметра в layout как правильно?
Код: Выделить всё
'rules' => [
'http://<language:\w+>.example.com/posts' => 'post/index',
]
Код: Выделить всё
'rules' => [
'http://<country:\w+>.example.com/ => 'site/index',
]
Re: Передача параметра в layout как правильно?
Контроллер:
Код: Выделить всё
public function actionIndex($country = null)
{
......
}
Код: Выделить всё
'urlManager' => [
...
'enablePrettyUrl' => true,
'showScriptName' => false,
'suffix' => '/',
'rules' => [
'http://<country:\w+>.domain.loc/' => 'site/index',
],
],
...
т.е. Вы предлагаете сделать виджет где получать все страны из БД и передавать в этот виджет гет параметр который и является кодом страны?
Re: Передача параметра в layout как правильно?
ну если страна уже в поддомене, то почему нет?