Невозможно использовать переменную сеанса в файле routes.php в codeigniter?

Я использую следующий код для извлечения переменной сеанса в routes.php

if($this->db_session->userdata('request_url')!="")
{
$route['user/(:any)'] = "search_user_name/redirect_url/".$_SESSION['request_url'];
$this->db_session->unset_userdata('request_url');
}
else {
    $route['user/(:any)'] = "search_user_name/index/$1";
}

переменная сеанса будет установлена ​​в template/header.php

$this->db_session->set_userdata('request_url', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]);

Ответ 1

Вы не можете использовать db_session в routes.php, потому что route.php анализируется до загрузки db_session. Возможно, вы должны создать базовый контроллер и перенаправить с конструктора базового контроллера.

Ответ 3

Вы можете использовать базу данных в маршрутах и ​​поместить свой маршрут в базу данных. Вот пример:

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$table2 =  $db->dbprefix.'lang';
$query2 = $db->get( $table2 );
$result2 = $query2->result();
foreach( $result2 as $row )
{   
    $fields = $db->list_fields($table2);
    $findme   = 'code';
    foreach($fields as $field):
        $pos = strpos($field, $findme);
        if($pos !== false and $row->$field != ''):
            $route[''.$row->$field.''] = 'main/setlang/$1';
        endif;
    endforeach;
}