2009-04-16 9 views
2

指定されていない場合、「デフォルト」のパラメータを取得するにはどうすればよいですか?Zend Framework:デフォルトのパラメータを取得するには?

は、次の点を考慮:URLは私を行う方法

http://localhost/controller/action/456 

であれば、私のコントローラで

http://localhost/controller/action/id/123 

を、私は

$request = $this->getRequest(); 
$id = $request->getParam('id'); 

を使用して 'ID' の値を取得することができます456の値を取得しますか? 「param」という名前は何ですか?デフォルトZFのURLによって

+0

http:// localhost/controller/action/456のような他のパラメータを使用したい場合はどうすればいいですか?otherparameter = foo&thirdparam = bar? – fabrik

答えて

4

は、パターンに従わなければならない:

/controller/action/param1Name/param1Val/param2Name/param2Val ... 

あなたはrouterを使用する必要があります。たとえばbootstrap.phpに:

$frontController = Zend_Controller_Front::getInstance(); 
//^^^this line should be already there 

$router = $frontController->getRouter(); 
$route = new Zend_Controller_Router_Route(
    'yourController/yourAction/:id', 
    array(
     'id'  => 1, //default value 
     'controller' => 'yourController', 
     'action'  => 'yourAction' 
    ), 
    array('id' => '\d+') 
); 
$router->addRoute('yourController', $route); 
+0

どこにこのルータを追加すればよいですか? docの中にはコントローラの中に書かれています。それはcontrollers/myController.phpですか?またはbootstrap.phpファイルで? TQ! –

+0

フロントエンドコントローラーを指しています – vartec

+0

ありがとうございます。それを共有するには、フロントコントローラーをディスパッチする前にすべてを入れる必要があります。 <上のコードはこちら> //フロントコントローラを使用してリクエストを送信します。 $ frontController-> dispatch(); –

0

ルータにこのルートを追加しよう:

$route = new Zend_Controller_Router_Route_Regex(
    'my_controller/my_action/(\d+)', 
    array(
     'controller' => 'my_controller', 
     'action'  => 'my_action' 
    ) 
); 

$router->addRoute('my_route', $route); 
+0

このルータはどこに追加すればよいですか? docの中にはコントローラの中に書かれています。それはcontrollers/myController.phpですか? –

+0

この場合、Vartecの方がより効率的です。 –

1

ちょうど共有したいと思います。

上記のルータ設定は、$ frontControllerで使用する必要があります。

コントローラをディスパッチする前に必ず入れてください。

<..above router code goes here...> 

// Dispatch the request using the front controller. 
$frontController->dispatch(); 

自分のような時間を無駄にしないでください。 ;-)

+0

もちろんです。だからこそ私は、ディスパッチする前に呼び出されるbootstrap.phpにそれを置くことを提案しました。 – vartec

関連する問題