我想为url创建具有参数的客户路线。
<a href='javascript:void(0)' onclick="window.location='<?php echo
$this->url(array('module' => 'courses', 'controller' => 'course', 'action' => 'add',
'std_id' => $entry['std_id']), 'coursesadd', TRUE); ?>'">add course</a>
在这里我做了路由
$route = new Zend_Controller_Router_Route('courses/std_id/:std_id',
array('module' => 'courses', 'controller' => 'course', 'action' => 'add'));
$routesArray = array('coursesadd' => $route );
$router->addRoutes($routesArray);
但它没有正确路由!
答案 0 :(得分:1)
你的代码看起来很好,除了RockyFord悲伤 - 你应该只将这些参数传递给指定路由所需的url()帮助器(当使用'default'路由时,它确实需要模块,控制器,动作,但是你的' coursesadd'route只需要std_id参数)。此外,你应该改善你的路线:
$route = new Zend_Controller_Router_Route('courses/:std_id', array(
'module' => 'main',
'controller' => 'product',
'action' => 'add',
'std_id' => null //default value if param is not passed
));
您的路线中的param_name/:param_value
构造是多余的,因为您已经为参数命名,因此通过使用上述路线,您将在控制器中使用
std_id
参数
$this->_getParam('std_id')
路由定义中的默认值可以避免抛出Zend_Controller_Router_Exception: std_id is not specified
,但看起来$entry['std_id']
未设置。