Максим
SiZE
это все голословно "типа мы все разные" и "вот именно я то расту"
Сергей
народ как отрендерить вьюху в beforeAction
Сергей
пишу на yii2
SiZE
не надо так делать )
SiZE
на то это beforeAction )
Сергей
редирект не канает)
Сергей
а как по уму?
Сергей
мне нужно по тому же урлу отрендерить другую вьюху в зависимости от обстоятельств
SiZE
надо начять с описания задачи
SiZE
каких обстоятельств?
Сергей
уже)
Сергей
ну например какое нибудь условие
SiZE
почему ты не можешь в том же экшене вывести по условию другую вьюху тогда?
Сергей
в том и соль
Сергей
я наследую несколько модулей
Сергей
от одного контроллера
SiZE
врешь ты все и спишь на полке ) в рнр нет множественного наследования )))
Сергей
и во всех мне нужно подменять вьюху
Сергей
в php нет в yii есть)
SiZE
правильно поставленный вопрос половина решенной задачи.
SiZE
в модулях свои контроллеры наследующие базовый?
Сергей
все верно
Сергей
много модулей и много контроллеров в них
Сергей
все от базового
SiZE
тогда мне все больше не ясно, почему нельзя переопределить экшен базового контроллера?
Сергей
вот как это сделать я и спрашиваю
Сергей
я попадаю в экшны контроллеров модулей
Сергей
в базвом я сделал beforeAction
Сергей
получил action
Сергей
как его переопределить?
SiZE
ModuleController extends BaseController
{
public function actionFromBaseController();
}
Toly
Наследовать экшены, как показывает практика - не очень полезное занятие
SiZE
Сергей
мне нужно подменить страницу
Сергей
по тому же урлу
Сергей
по условию, например по проставленной куке
Toly
Сделай свойство $viewFile у контроллера и меняй сколько влезет
Toly
Переопределять непосредственно Action иногда может быть полезным, но пост-обработку результатов делать очень неудобно
SiZE
тогда уж экшен вынести в класс и у него менять свойство
SiZE
в beforeAction
Виталий
Переопредение viewFile приведёт к тому, что action будет выполнен?
Виталий
Иными словами время будет затрачено, а результат переопределён?
SiZE
Toly
Виталий (упс, Сергей), быть может, вы опишите проблему подробней, чтобы мы могли предложить лучшее решение? Сейчас не совсем понятно зачем вам подменивать view у контроллера. Разные версии сайта или как?
SiZE
Я пытался узнать. Все покрыто тайной )))
Toly
Если нужно показывать 2 версии сайта по каким-то условиям, то лучше взглянуть на Theme
Сергей
нужно целиком логику страницы подменять
Сергей
у сайта есть геопределение города
Сергей
по некоторым причинам оно не срабатывает и многие страницы валятся
Сергей
поэтому
Сергей
нужно отобразить страничку с выбором города
Сергей
на том же урле куда зашел пользователь
Сергей
при выборе города отредиректить на эту же страницу
Сергей
по факту нужно подменить экшн со всей его логикой
Toly
А редирект на страницу выбора города, а потом обратно не рассматриваете?
Сергей
нет
Сергей
плохо для сео
SiZE
http://stackoverflow.com/questions/28251890/forward-data-from-one-controller-action-to-other-in-yii2
SiZE
тогда возможно это лучше в init контроллера делать
Toly
плохо для сео
Ну, когда к вам гугл придёт и увидит сию страницу лучше не станет точно
SiZE
Toly
Но если бы мне приспичило сделать именно так, я бы подумал о своём Behavior
Toly
Наследуйтесь от ActionFilte и получите в качестве бонуса возможность отключать его для некоторых экшенов
Сергей
Сергей
хорошо попробуем
Сергей
спасибо
Toly
робота можно залочить
Я не специалист в SEO, конечно, но, насколько я помню, поисковые движки не рекомендуют подменять контент основываясь на User-Agent робота, т.к. за это можно получить по шапке. Могу быть не прав. Я к SEO со скептицизмом отношусь вообще
Toly
Обращайтесь
Виталий
Вот поэтому и не должно быть 302 редирект и отдельный URL
Toly
Так вообще ИМХО принудительный выбор города не должен происходить
Toly
Но требования есть требования. Я бы просто default выбирал в случае неопределённости
Toly
http://dn.imagy.me/201609/22/fe0156059a301550593e298ce4a1d077.png
SiZE
Toly
Да я без претензий. Прекрасно понимаю какие ТЗ бывают)
Виталий
А если мы однозначно знаем, какой у тебя город, почему за клиента не отработать?
Toly
Он может неверно определиться
Виталий
Естественно возможность поменять остается
Toly
У мобильного интернета раньше такое часто наблюдалось. Пул IP заимствовали у других регионов