2012-04-01 4 views
0

매개 변수가있는 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

무엇이 잘못 되었나요? '/ course/std_id/5'로 이동하면 어떻게됩니까? 나는'url()'도우미를 사용할 때 모듈/컨트롤러/액션을 키 쌍으로 가지거나 라우트의 이름을 가지고 있다고 말할 것이다. 그래서'$ this-> url (array ('std_id'=> $ entry [ 'std_id']), 'courseadd')'가 더 정확할 것입니다. – RockyFord

+0

이 오류가 발생합니다. Zend_Controller_Router_Exception : std_id가 지정되지 않았습니다. – palAlaa

+0

url 도우미를 사용하거나 url을 탐색하여 오류가 발생 했습니까? – RockyFord

답변

1

RockyFord가 슬픈 점을 제외하면 코드가 멋지게 보입니다. - 지정된 경로에 필요한 url() 도우미에만이 매개 변수를 전달해야합니다 ('default'경로가 실제로 사용되면 모듈, 컨트롤러, 동작이 필요하지만 'coursesadd'경로는 std_id 매개 변수 만 필요함). 또한 당신은 당신의 경로 조금에 개선해야 당신은 사용 컨트롤러에 std_id PARAM를 얻을 수 있습니다 경로 위에 사용하여, 그래서 당신은 이미, 매개 변수 이름 때문에

$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 건설은 중복

$this->_getParam('std_id') 

경로 정의의 기본값은 Zend_Controller_Router_Exception: std_id is not specified을 던지면서 저장되지만 $entry['std_id']은 설정되지 않은 것으로 보입니다.

+0

매개 변수의 기본값을 제공 할 때 작동합니다. – palAlaa

관련 문제