2011-07-13 18 views
5

私はPlayでSEOに適したルートを設定しようとしています!複数のパラメータを持つフレームワーク(2番目のパラメータはオプション)。
複数のパラメータを使用したPlay Frameworkルーティング

 
http://domain.com/article/jsmith/name-of-article 

しかし、どのようなプレイ生成していることである:私は何を目指してることはある @{Article.show("jsmith","name-of-article")}

マイコントローラー
public static void show(String username,String articleSlug){ ... }

:私の見解では

 
http://domain.com/article/jsmith?articleSlug=name-of-article 

私のルート

路線:

GET  /{<[0-9]+>id}/{slug}   Listing.show 
GET  /{<[0-9]+>id}     Listing.show 

を仕事に、このためコントローラのメソッドが存在しなければならない、私はあなたが以下のマッピングを使用して探しているものを達成している

 
GET /article/{username}     Article.show 
GET /article/{username}/{articleSlug} Article.show 

答えて

3

は、あなたのテンプレートが最初のルートと一致しているようです。順序を逆にすると、

GET /article/{username}/{articleSlug} Article.show 
GET /article/{username}     Article.show 

はまた、ユーザ名とarticleSlugを受け入れるためにあなたのコントローラを持って、トリックを行います。多分item.title.slugify()が不明な理由で解釈されません

show(username, articleSlug){} 
0

ファイル:

public static void show(Long id, String slug) { /* ... */ } 
public static void show(Long id) { /* ... */ } 

し、それがビューから使用することができます。

#{a @Listing.show(item.id, item.title.slugify())}link title#{/a} 
#{a @Listing.show(item.id)}link title#{/a} 
+0

...あなたはitem.title.slugify(= VARスラグを含む前に変数を作成しようでした)と? – mandubian

+1

最初のテンプレートが2番目のルートを取得しています。 2番目のテンプレートでは、一致するコントローラがありますか?ショー(id、slug)? – sojin

+0

はい!その第2のコントローラメソッドは欠けていました。私はこれに寛容であると考えていただけで、2番目のパラメータを使用していません。 –

関連する問題