1

私のルート設定:

Zend_Controller_Front::getInstance()
    ->getRouter()
    ->addRoute('view', new Zend_Controller_Router_Route('controller/action/:name'))

ビュー内の私のリンク:

$this->url(array("name" => "John"), "view", TRUE);

// returns "controller/action/John" as should

さて、私がにいるときcontroller/action/JohnどうすればnameURLから取得できますか?私は試した

$this->getRequest()->getParam("name");

ただし、名前paramはありません-getRequest()コントローラー、アクション、およびモジュールのパラメーターのみを返します。

4

2 に答える 2

1

ルート構成を設定するとき、ルート定義はコントローラー/アクション名と直接一致するか、デフォルトで設定する必要があります。実際にデフォルトを設定することは良い習慣であり、このような問題を回避するのに役立ちます。

したがって、コメントによると、あなたの場合、ルートはおそらく次のようになります。

$defaults = array(
    'controller'=> 'offers',
    'action'    => 'view',
    'name'      => ''
);
$route = new Zend_Controller_Router_Route('offers/view/:name',$defaults);

コメントで述べたように、どのルートが使用されているかをいつでも確認できますZend_Controller_Front::getInstance()->getRouter()->getCurrentRouteName()。予想されるルートが表示されない場合、ルーターは一致するものを見つけることができず、通常は「デフォルト」ルートで終了するまで先に進みます。

質問の補足として:使用する$this->url(array("name" => "John"), "view", TRUE)場合は、ルートに基づいてリンクを作成するだけです。このメソッドはビューの一部にすぎず、コントローラーまたはアクションへのディスパッチに関しては何もしません。

于 2012-10-26T17:30:56.890 に答える
0

この質問を見つけた人のために、そして将来の参考のために$this->params()->fromRoute('param1', 0);、少なくともZend Framework 2では、これを使用してルートからパラメーターを取得できます。これが私がこの質問で探していたものです。

于 2012-11-10T20:29:20.480 に答える