0

私はいくつかのURLを持っています:

  • / dave
  • / davina
  • / dave / chris
  • / davina / peter

ルートにそれらすべてのエントリがあります。この例は次のとおりです。

routes.dave.route = /dave
routes.dave.defaults.module = default
routes.dave.defaults.controller = person
routes.rcp.defaults.action = index

routes.davina.route = /dave/chris
routes.davina.defaults.module = default
routes.davina.defaults.controller = person
routes.davina.defaults.action = index

重複の問題があることがすぐにわかると思います。複数のURLを1つのルートに結合する方法はありますか?

/:personを使って遊んだことがありますが、personcontrollerには行かない他のコンテンツもあります。

routes.person.route = /:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "^[a-zA-Z0-9]+$"

検索コントローラーに送信される/search?person = daveなどのURLは、上記の式によって明らかに殺されています。

要件をリストとして表現できますか?「dave|davina | etc」またはこれを行う別の魔法のzendメソッドはありますか?

更新: 私は遊んでいて、この部分的な解決策に出くわしました:

routes.person.route = /:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "(dave|davina)"

routes.person.route = /:person/:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "(chris|peter)"

私は今のところこれを使って私の要件を満たしていますが、誰もがアドバイスを提供できるようにこれを開いたままにします(少なくとも1日)。主な問題は、両方のリストが大きくなり、最終的に問題が発生することです。

4

1 に答える 1

1

私はそのための答えを持っているかもしれないと思います。

ZFでは、ルートは逆の順序で照合されます。したがって、最後に定義されたルートが最初に一致します。

この場合、/:person/:personnameルートを定義してから、aboutページ、contactページなどの他の静的ルートを定義する必要があります。

Zendを正しく理解していれば、機能するはずです。これは明確にそれを行います:

url=/about
match route "/about"

url=/david/parker
match route "/:person/:personname"
not "/about" or "/contact"
于 2013-03-27T01:08:03.020 に答える