Основная проблема в том, что мое действие слишком сложное — как его упростить?
Оно должно изменить язык и перенаправить на новый URL-адрес (на целевом языке).
Вкратце: у нас был случайный действительный URL-адрес торта на одном языке, и нам пришлось перевести его в адекватный URL-адрес на другом языке.
Моя таблица маршрутизации:
Код: Выделить всё
if( 'en' == Configure::read('Config.language') ) {
Router::connect('/help', array('controller' => 'pages', 'action' => 'display', 'help') );
} else {
Router::connect('/pomoc', array('controller' => 'pages', 'action' => 'display', 'help') );
}
Код: Выделить всё
function lang($lang) {
// getting previous url table
$url = $this->referer();
$url = Router::parse($url);
// changing language
if( in_array($lang, Configure::read('Languages.valid') ) ) {
$this->Session->write('Language', $lang);
Configure::write('Config.language', $lang);
}
// saving base params
$requestInfo = array(Router::getParams(), Router::getPaths());
// reload routing table
Router::reload();
include(CONFIGS.'routes.php');
// restore base params
Router::setRequestInfo($requestInfo);
// fix for 'pass' params
if(!empty($url['pass']) && is_array($url['pass'])) {
$url = array_merge($url, $url['pass']);
unset($url['pass']);
}
$this->redirect($url);
}
Код: Выделить всё
/pages/display/help
Код: Выделить всё
pass => array(
0 => 'help'
)
Код: Выделить всё
/pages/display/pass:Array
Подробнее здесь: https://stackoverflow.com/questions/689 ... oading-rou
Мобильная версия