があります"/{staat}/"
が、要件が設定されています"location" = ...
。これらは一致する必要があるため、それが問題の原因である可能性があります。
ルートに状態のリストをハードコーディングしたくない場合は、サービス コンテナー パラメーターに状態のリストを挿入できます。その方法については、ドキュメントのルートでサービス コンテナー パラメーターを使用する方法を参照してください。
その状態がすべて小文字であるかどうかを確認したいだけの場合は、次の要件を試すことができます。
staat: "[a-z-]+"
これは、小文字とダッシュのみに一致する必要があります (例: "sachsen-anhalt")。しかし、ルーターの正規表現検出が少し風変わりであるため、これが機能するかどうかは完全にはわかりません。
データベースまたはファイルから状態のリストをフェッチするなどして、プログラムでルートを作成するカスタム ルーター ローダーを作成することもできます。
編集:
コメントに書いたように、params のリストを Service Container パラメーターとして追加します。たとえば%my_demo.states%
、状態のリストが含まれます。ただし、これが注釈で機能するかどうかはわかりません。そのため、これを機能させる簡単な回避策を次に示します。
あなたはパラメータapp/config/config.yml
を追加し%my_demo.states%
ます:
my_demo:
states: ["berlin", "brandenburg", "sachsen-anhalt", ... ]
あなたapp/config/routing.yml
には次のようなものがあるはずです:
my_demobundle:
resource: "@MyDemoBundle/Controller/"
prefix: /
type: annotation
type: annotation
and@MyDemoBundle
が該当部分です。このルートの前に次のルートを追加して、優先されるようにします。
showStaats:
path: /{state}
defaults: { _controller: MyDemoBundle:State:index }
requirements:
state: %my_demo.states%
これにより、状態のリストをパラメーターとして使用して、注釈の前に適用されるルートが追加されます。yml/注釈ベースのルーティングを混在させているため、これは少し粗雑ですが、保守が容易であることは言うまでもなく、注釈に16の状態のリストを詰め込むよりも優れています。