2011-01-15 4 views
6

私はplayframeworkを使用しています。私は、stackoverflowのような複雑なURLを生成したいと考えています。たとえば、質問のURLを生成したいとします。どのようにstackoverflowのような複雑なURLを生成するには?

http://aaa.com/questions/123456/How-to-generator-a-complex-url 

最後の部分は、質問のタイトルです。

しかし、私はそれを行う方法がわかりません。

がplayframeworkで

を更新し、我々はconf/routesファイル内のルートを定義することができ、そして私がやっていることである。このように

GET /questions/{<\d+>id} Questions.show

、我々はビューで@{Questions.show(id)}を呼び出すとき、それは生成する:

http://aaa.com/questions/123456

しかし、どのように生成させるにはのタイトル部分があります。

答えて

11

このようなURLを生成するのは簡単です。あなたのルートにこれを追加ファイル:

GET /questions/{id}/{title}  YourController.yourMethod 

あなたのHTMLページに詳細

のルーティングについてplayframeworkサイトでのドキュメントを参照してください:

<a href="@{YourController.yourMethod(id,title.slugify())}"> 

slugify方法JavaExtensionsから、あなたのタイトルをきれいに予約文字(see doc

2

これはサーバー側のURLリライターです。 SOの場合は、{...}/questions/4698625/how-to-generate-complex-url-like-stackoverflowまたは{...}/questions/4698625と入力しても問題ありません。どちらも同じコンテンツにリダイレクトされます。したがって、この接尾辞はURLの可読性を高めるためにのみ使用されます。

URLの書き換えの詳細については、this postを参照してください。

UPD:

  • はダッシュですべての空白を置き換える単一
  • に複数の空白を縮小し、
    1. は、コンテンツのタイトルを取る、などのpostfixを生成するために、( - )
    2. タイトル以外の記号をすべて削除します。

    正規表現でこの操作を行う方が良い

  • +0

    ありがとうございますが、難しい部分はプレイフレームワークでやっています。 – Freewind

    +0

    @Freewind、申し訳ありませんが、playframeworkについての誤読 – Genius

    関連する問題