Пользовательский маршрут с параметрами - PullRequest
0 голосов
/ 01 апреля 2012

Я хочу создать маршрут клиента для 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);

Но это не правильно!

1 Ответ

1 голос
/ 01 апреля 2012

Ваш код выглядит нормально, за исключением того, что RockyFord печально. Вы должны передавать только те параметры, которые требуются для назначенного маршрута в url (), который требуется для обозначенного маршрута (когда используется маршрут по умолчанию, он действительно требует модуля, контроллера, действия, но вашего). Для курса courseadd 'требуется только параметр 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 param в контроллере, используя

$this->_getParam('std_id')

Значение по умолчанию в определении маршрута спасет от броска Zend_Controller_Router_Exception: std_id is not specified, но похоже, что $entry['std_id'] не установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...