Zend framework Zend和addRoute()的问题
使用此代码:Zend framework Zend和addRoute()的问题,zend-framework,zend-route,Zend Framework,Zend Route,使用此代码: $frontController = Zend_Controller_Front::getInstance(); $router = $frontController->getRouter(); $router->addRoute( 'test', new Zend_Controller_Router_Route( '/test/:action/:type/:id', array( 'contro
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute(
'test',
new Zend_Controller_Router_Route(
'/test/:action/:type/:id',
array(
'controller' => 'admin'
)
)
);
->好的
->失败
在第二种情况下,应用程序不识别param2
应用程序似乎需要参数3才能读取参数2
我怎么做
谢谢
使用@RageZ中的代码进行测试
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute(
'test',
new Zend_Controller_Router_Route(
'/test/:action/:type/:id',
array(
'controller' => 'admin',
'id' => 0
),
array(
'id' => '\d+'
)
)
);
->好的
->好的
->失败
->好的
想法?如果参数是可选的,则必须提供默认值
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute(
'test',
new Zend_Controller_Router_Route(
'/test/:action/:type/:id',
array(
'controller' => 'admin',
'id' => 0
),
array(
'id' => '\d+'
)
)
);
与您的问题无关,但使用addRoute的第三个参数是一种很好的做法。Zend Framework将验证参数值是否与您指定的格式匹配,在这种情况下,我假设id是一个整数 尝试为所有内容提供默认值
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute(
'test',
new Zend_Controller_Router_Route(
'/test/:action/:type/:id',
array(
'controller' => 'admin',
'action' => 'index',
'type' => 'sometype',
'id' => 0
),
array(
'id' => '\d+'
)
)
);
刚刚在某个测试项目中尝试了你的代码,这修复了它,希望它能为你工作 @joanballester:由您决定是否需要默认值并指定格式。在你的情况下,两个url都会起作用,我很抱歉,但是。。。我不能!我将继续尝试(我已经编辑了帖子)@joanballester:让我设置一个虚拟应用程序来测试最后一个代码缺少类型的默认值…;)