2

問題:

次のような URL が必要です。

wall:
pattern:  /{username}/

しかし.. /Messages/、/Settings/ などのすべての URL に一致します。

そして、頭に浮かぶ唯一の解決策は、このユーザーが存在するかどうかを確認することです...そして、実際の /Settings へのリダイレクトがない場合は? しかし、各ページに1つの選択があり、私はそれが好きではありません.

他に方法はありますか?+ ルート パターンを使用してユーザーの登録を拒否する必要があるのではないでしょうか? どのように?

いいえ、URL に /User/{username} のようなものを追加したくありません

4

2 に答える 2

3

私のコメントによると、これは回避策になる可能性があります。

pages:
    pattern: /{page}/
    requirements:
        page: "(Messages|Settings|SomeOtherPage|YetAnotherPage)"
wall:
    pattern:  /{username}/

基本的に、ページ (設定、メッセージなど) は大文字 ([AZ]) で始まる必要があり、残りのページ名は重要ではありません。

ユーザー プロファイル ページに関しては、小文字 ([az]) で明示的に開始する必要があります。

これがあなたの要件を満たすかどうかはわかりません...

編集:

これは実際には、@ tomas.pecserke の少し単純化されたソリューションです。すべてのページが単一のルートで列挙されるように、ルーティングを編集しました。

于 2013-03-22T11:04:47.417 に答える
0

このアプローチは強くお勧めしません。ルートの前に必ずプレフィックスを付ける必要があります。ただし、この方法で行う必要がある場合は、最初に他のルートを指定できます。RouteMatcher は、パターンに一致する最初のルートを選択します。

# src/Acme/DemoBundle/Resources/routing.yml
account:
    pattern: /account
    defaults: # ...
some_other_route:
    pattern: /some_other_route
    defaults: # ...
wall:
    pattern: /{username}/
    defaults: # ...
    # you can set requirements
    requirements:
        username: [a-z0-9]+ # regular expression
于 2013-03-22T11:00:25.150 に答える