2015-09-24 9 views
10

Zend F/W 1.12を使用してRESTサーバーを構築しています。 私の要件の1つは、Zendが "Restfull"アクションとして認識できる範囲外のアクションを持つことです。私が意味することは、mymediaのようなものがあり、// mymediaに向けられたリクエストをルーティングするようにしたいということです。現在、ZendはgetActionのIDとして理解していますが、これは私が望むものではありません。Zend RESTコントローラへのカスタムルートの追加

ご協力いただきますようお願い申し上げます。 ありがとう

答えて

0

私はかつて、安らかなルートを扱うことができるzend framework 1のカスタムルートを書いていました。それは今まで私に役立った。詳細はhttps://github.com/aporat/Application_Rest_Controller_Routeを参照してください。例えば

、あなたがそのようなZendのコントローラのアクションに正しくマップ/users/30/messagesとしてURLを持つようにしたい場合は、あなたのブートストラップにこのルートを使用します。

$frontController = Zend_Controller_Front::getInstance(); 
$frontController->getRouter()->addRoute('users-messages', new Application_Rest_Controller_Route($frontController, 'users/:user_id/messages', ['controller' => 'users-messages'])); 
+0

それは私を指していた正確な答えではありませんが、正しい方向に感謝!最終的に私はちょうど一定のコントローラ、モジュール、およびアクションで別のZend_Routeを追加しました。 – Alon1980

+0

残念ながら、リポジトリはもはや利用できないように見えるので、リンクは壊れています。 –

3

Zend_Rest_Routeの実装では、多くのカスタマイズはできませんが、すぐに使用できるようにするための基本的なルーティングスキームが用意されています。

URIをどのように解釈するかを変更する必要がある場合は、Zend_Rest_Route,Zend_Controller_Router_Route_ModuleまたはZend_Controller_Router_Route_Abstractクラスを拡張して独自のルーティングを作成することができます。

これらのクラスの方法については、matchをご覧ください。 $_moduleKey,$_controllerKeyおよび$_actionKeyプロパティを尊重しながら、$_valuesプロパティ配列に値を設定します。

たとえば、次のように追加できます。あなたのブートストラップクラス内の最初のルートとして:

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute('myRoute', new My_Route($frontController)); 
$router->addRoute('restRoute', new Zend_Rest_Route($frontController)); 

参照:

http://framework.zend.com/manual/1.12/en/zend.controller.router.html#zend.controller.router.basic

ルーティングは、すべてのルートからリクエストURIにその定義を一致させる単純なプロセスです。肯定的な一致が見つかると、変数値がRouteインスタンスから返され、Zend_Controller_Requestオブジェクトに注入され、ディスパッチャおよびユーザ作成コントローラで後で使用されます。否定的な一致結果では、チェーン内の次のルートがチェックされます。

関連する問題