Многоязычный CakePHP не работает при выборе изменения

#php #cakephp #configuration #cakephp-2.0 #multilingual

#php #cakephp #конфигурация #cakephp-2.0 #многоязычный

Вопрос:

На моем веб-сайте я реализовал многоязычную опцию. Это работает, когда я переодеваюсь Configure::wirte('Config.language', 'eng'); в core.php файл, но когда я пытаюсь сделать это с помощью javascript, это не работает. У меня есть вызов AJAX, выполняемый каждый раз, когда я меняю выбор, и эта часть работает, также у меня есть функция php:

 public function changeLanguage() {
    $this->autoRender = false;
    Configure::write("Config.language", $this->params['lang']);
    debug(Configure::read("Config.language"));
}
 

который должен менять язык в конфигурации, и это происходит, потому что он отображается в этой отладке, но на главной странице, когда я показываю конфигурацию языка, он показывает, что по какой-то причине он равен null. А также я попытался загрузить языковую конфигурацию во все контроллеры, но это работает только тогда, когда я предварительно переписываю язык следующим образом:

 Configure::write('Config.language', 'eng');
$locale = Configure::read('Config.language');
if ($locale amp;amp; file_exists(APP . 'View' . DS . $locale . DS . $this->viewPath . DS . $this->view . $this->ext)) {
    $this->viewPath = $locale . DS . $this->viewPath;
}
 

Но без Configure::write это не работает, но должно работать. И еще одна вещь, которую я добавил window.location.reload() после получения кода 200 из этой функции, чтобы язык мог измениться, потому что php не работает без обновления. Вы можете мне помочь?

Комментарии:

1. Все, что вы записываете в конфигурацию, теряется при следующей загрузке страницы. Я думаю, вы, возможно, хотели вместо этого поместить его в сеанс?

2. Хорошо, поэтому я попытался создать сеанс в javascript при изменении выбора, но cakephp этого не видит. Когда я пытаюсь отобразить его в beforeFilter и на моем основном сайте, он показывает null, когда в javascript он показывает правильное значение.

3. Сеансы JavaScript полностью хранятся в браузере; сеансы PHP полностью хранятся на сервере. Они совершенно не связаны между собой. То, что вам нужно для этого, находится здесь .