palAlaa
palAlaa

Reputation: 9878

Custom route with parameters

I want to make customer route for url which have parameters.

 <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>

and here what I make routing

$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);

But It doesn't route correctly!

Upvotes: 0

Views: 1742

Answers (1)

vandalizmo
vandalizmo

Reputation: 377

Your code looks fine, except what RockyFord sad - You should only pass these parameters to url() helper which are required by designated route (when 'default' route is used indeed it requires module, controller, action, but Your 'coursesadd' route requires only std_id parameter). Moreover You should improve Your route a little bit to:

$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
));

The param_name/:param_value construction in Your route is redundant because You already named the parameter, so by using above route You'll get std_id param in controller using

$this->_getParam('std_id')

Default value in route definition would save from throwing Zend_Controller_Router_Exception: std_id is not specified but it looks like $entry['std_id'] is not set.

Upvotes: 1

Related Questions