2010-12-01 116 views
0

它可以从下面的不正确路线:的CakePHP 1.3路由问题

Router::connect('/ctl/act/subact/:mode/:sort'  
, array('controller' => 'ctl', 'action' => 'act_subact', 
'mode' => null , 'sort' => null)); 

-

$html->link('go',array('controller'=>'ctl','action'=>'act_subact')) 

-

<a href="/ctl/act_subact/">go</a> 

我该怎么办? Env:CakePHP 1.3.6 php5.2.5上apache2

回答

2

路由/ctl/act/subact/:mode/:sort意味着必须有一个:mode:sort参数。此路线不符合URL /ctl/act/subact/。如果有可选参数,则需要用星号表示:/ctl/act/subact/*。此路线将匹配网址/ctl/act/subact//ctl/act/subact/foo/ctl/act/subact/foo/bar

如果你需要这些可选参数命名参数,你需要为每个可能的“长度”几个途径:

Router::connect('/ctl/act/subact/:mode/:sort', array('controller' => 'ctl', 'action' => 'act_subact', 'mode' => null, 'sort' => null)); 
Router::connect('/ctl/act/subact/:mode', array('controller' => 'ctl', 'action' => 'act_subact', 'mode' => null)); 
Router::connect('/ctl/act/subact/', array('controller' => 'ctl', 'action' => 'act_subact'));