解析路由時,會話尚未啓動。如果您使用Cake的會話處理,它們由會話組件啓動,會話組件僅在路由後發生,並與控制器一起加載。
你不應該做動態路由兩種,因爲他們是用於反向路由:如預期再
Router::connect('/dashboard', array('controller'=>'users', 'action'=>'dash'));
$html->link('…', array('controller'=>'users', 'action'=>'dash'));
// -> /dashboard
如果你想使這個充滿活力的,這是行不通的:
Router::connect('/dashboard',
array('controller'=>'users', 'action'=>'dash', $_SESSION['user']));
$html->link('…', array('controller'=>'users', 'action'=>'dash', 1));
// -> /dashboard
$html->link('…', array('controller'=>'users', 'action'=>'dash', 2));
// -> /users/dash/2
路線應該是一個靜態的事情。路線定義您的應用程序URL架構,如地圖。這根本不是做任何「真正的工作」的地方。一切動態都在控制器中發生。
我認爲你明智地在功能內移動問題。我還沒有使用Auth組件很多(也許我應該進一步調查?),但這可能是我的一個快速修復: 功能破折號($ id){ if(empty($ id))$ id = $ _SESSION [ '用戶ID']; ... } 我仍然好奇爲什麼會話變量和routes.php不想混合... – thesunneversets 2010-06-30 22:31:46