Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите поправить с Cookie::get (https://javascript.ru/forum/server/81884-pomogite-popravit-s-cookie-get.html)

Vaska 10.02.2021 01:53

Помогите поправить с Cookie::get
 
Приветствую!

После обновления движка разработчиками, с PHP7.3 до 7.4, был переписан фреймворк ThinkPHP6.
После этого старые модули, которые разработчик выбросил, перестали работать. А я бы хотел их сохранить в использовании.

На сайте есть переключение на 3 языка.
Перестало работать переключение языков.

Код JS, который переключает языки:
function change_lang(lang){
    if (lang == 'zh-cn') {
        layer.confirm('您确定把语言切换为中文版?', {
            btn: ['是', '否'] //按钮
        }, function () {
            $.cookie('ds_home_lang', lang, { path: '/' });
            window.location.reload();
        });
    }else if(lang == 'en-us'){
        layer.confirm('Switch language to english?', {
            btn: ['Yes', 'No'] //按钮
        }, function () {
            $.cookie('ds_home_lang', lang, { path: '/' });
            window.location.reload();
        });
    }else if(lang == 'ru-ru'){
        layer.confirm('Переключить язык на русский?', {
            btn: ['Да', 'Нет'] //按钮
        }, function () {
            $.cookie('ds_home_lang', lang, { path: '/' });
            window.location.reload();
        });
    }else{
        layer.alert('Не установлен язык '+lang)
    }
}


В файле common_global.php код, который прописывает Cookie выбранного языка:
Здесь есть ошибка, которую я не знаю как исправить.
if (in_array(think\facade\Cookie::get('ds_home_lang'), array('zh-cn', 'en-us', 'ru-ru'))) {
    think\facade\Config::set('lang.default_lang', think\facade\Cookie::get('ds_home_lang'));
}


Функция в файле фреймворка, строка 176 Config.php, которая обрабатывает запрос на запись кукис:
public function set(array $config, string $name = null): array
    {
        if (!empty($name)) {
            if (isset($this->config[$name])) {
                $result = array_merge($this->config[$name], $config);
            } else {
                $result = $config;
            }

            $this->config[$name] = $result;
        } else {
            $result = $this->config = array_merge($this->config, array_change_key_case($config));
        }

        return $result;
    }

Функция в файле фреймворка, файл Facade.php line 96, которая тоже ругается:
Здесь как раз есть параметр, который должен быть указан в коде выше, в файле common_global.php, но я не знаю какой он должен быть.
public static function __callStatic($method, $params)
    {
        return call_user_func_array([static::createFacade(), $method], $params);
    }

Скриншот с ошибкой, после переключения на китайский язык:



Прошу помочь исправить.


Часовой пояс GMT +3, время: 05:45.