Я использовал этот урок http://www.yiiframework.com/wiki/208/how-to-use-an-application-behavior-to-maintain-runtime-configuration/ изменить язык. Но я столкнулся с проблемой, что переменная $ _Post [‘lang’] не сбрасывается, и каждый раз, когда я пытаюсь обновить страницу, она дает мне диалоговое окно повторной отправки формы, которое я не хочу иметь. Но я не знаю, где и как использовать редирект, так как он не работает в классе поведения. Как я могу предотвратить повторную отправку этой формы?
Изменить: я нашел уродливое решение, чтобы поместить этот код в каждый файл представления, который у меня есть
<?php
$this->renderPartial('//lang/_refresh', array())
?>
Но это вызвало многократное повторение одного и того же кода, и я уверен, что есть лучшее решение (вероятно, для размещения функции обновления в нужном месте)
Нашли решение, все что вам нужно — это добавить beforeAction к компонентам / контроллеру, поскольку все добавленные контроллеры расширяют его. Проблема была в том, что я этого не знал. Вот функция, которая работает так, что мне не нужно переписывать код.
protected function beforeAction()
{
if (isset($_POST['lang'])) {
$this->refresh();
}
return true;
}
Других решений пока нет …