2012-04-01 10 views
0

パラメータを持つURLのカスタマールートを作成したいと考えています。私はパラメータ付きカスタムルート

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

をルーティングしますが、それは正しくルーティングされないもの

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

とここに!

+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を得ることができますので、あなたのルートで param_name/:param_value建設は、冗長である

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

:またあなたはにあなたのルートを少し改善する必要があります

$this->_getParam('std_id') 

ルート定義のデフォルト値はZend_Controller_Router_Exception: std_id is not specifiedですが、$entry['std_id']は設定されていません。

+0

これは、パラメータのデフォルト値を与えるときに機能します。 – palAlaa

関連する問題