Не можете использовать переменную сеанса в файле router.php в codeigniter? - PullRequest
10 голосов
/ 12 августа 2011

Я использую следующий код для получения переменной сеанса в rout.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"]);

Ответы [ 3 ]

4 голосов
/ 12 августа 2011

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

1 голос
/ 18 апреля 2014

Поправь меня, если я ошибаюсь.Вы можете использовать крючки. Codeigniter руководство пользователя крючки

0 голосов
/ 07 сентября 2015

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

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...