2011-07-02 7 views
1

私はQを構築しています& Zend FrameworkのStackOverflowのようなサイト。それは空想のURLを除いてすべて設定されています。 のURLは次のようにすべきである:私は、連鎖ルートを使用する必要がありますが、いくつかの助けがいいだろうと思いますZend Frameworkを使ったStackOverflowスタイルのルーティング

www.site.com/programming 

wwww.site.com/programming/questions/321345/question-title-sanitized-with-dashes 

または

www.site.com/photography/questions/45621/photography-site-question 

をしかし、また、私はサイトを必要とするようホームページ。

+0

でルートを定義する方法についてmanual for Zend_Controller_Routermanual for Zend_Application resourcesを熟読示唆? – Femaref

+0

私はデフォルトの/:module /:controller /:アクションスタイルルーティングを変更しませんでした。どこから始めるのか分からないからです。 – cnkt

答えて

3

カスタムルートを使用すると、これを簡単に実行できます。私は、以下の仮定をするつもりだ、あなたのコードを構造化しているかについては何も指定されていませんでしたので:

  • あなたのサイトには、パラメータ
  • に基づいて発見された写真やプログラミングなどの「セクション」を持っています
  • あなたはすべてのセクションのための質問を処理する単一のコントローラを持っていますが、パラメータ

まずに基づいて、すべてを選択し、ホームページのケースについて:

ルート:section、およびモジュールのデフォルトを指定し、コントローラとあなたのセクションのホームページを扱うアクション。

第二に、質問のケースのために:

ルート:section/questions/:id/:title、そして再び具体的な質問を扱うモジュール、コントローラとアクションのデフォルトを指定します。また、IDに基づいてすでに質問が見つかる可能性があるので、タイトルのデフォルトを空として定義することもできます。

コントローラでは、$this->_getParam('section')のようなものを使用して、使用するセクションなどを決めることができます。

あなたはこれらのルートを作成する方法がわからない場合、私はあなたがあなたの現在のルートが何をしているあなたのapplication.ini

+0

私はあなたの考えが真実だからあなたの答えを受け入れました。しかし、ただ一つのことが変わったときにすべてのルートを再導入したくない。私はこれをクリアさせてください。私はこのようなサイトルートを作成しました: "セクション"、それは大丈夫です。ルートは一致します。あなたの思考では、質問のために、ルートは ":section/questions /:id /:title"でなければなりません。しかし、我々は「セクションルート」を再導入している。私の問題は次のとおりです。なぜなら、私が "回答"ページを追加したいのであれば、 ":section/questions /:id /:title/answers"でなければならないからです。しかし、 "/ answers"ルートを作成し、それを "questions"ルートに連鎖させる方が効果的です。 – cnkt

+0

はい、チェーンを連鎖させることはできますが、いくつかのことに応じて、あなたが望むように動作する場合もあります。 [ルートを連鎖するためのドキュメント](http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.chain)を参照してください。 –

関連する問題