解析路由时,会话尚未启动。如果您使用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