2011-08-12 15 views
10

Jestem użycie następującego kodu do pobrania zmiennej sesji w routes.phpNie można użyć zmiennej sesji w pliku routes.php w codeigniter?

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"; 
} 

zmienna sesja będzie ustawiona w szablonie/header.php

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

Odpowiedz

4

Nie można używać db_session w trasach. php, ponieważ routes.php jest analizowany przed załadowaniem db_session. Może powinieneś utworzyć kontroler bazowy i przekierować z konstruktora kontrolera podstawowego.

+0

Czy mogę dodać to w 'ci_controller'? –

+0

Myślę, że to powinno działać. Nie korzystałem jednak z codeignitera od wieków – cenanozen

0

Możesz korzystać z bazy danych na trasach i umieścić adres URL swojej trasy w bazie danych. Oto przykład:

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; 
} 
Powiązane problemy