2012-01-04 9 views
3

私は次のように定義されたルートを持っている:symfony 2:path()メソッドに_formatを追加する方法

my_route: 
    pattern: /{name}.{_format} 
    defaults: { _controller: AcmeMyBundle:Default:index, _format: html } 
    requirements: 
    _format: html 

問題は、テンプレート(ビュー)に次のコードを使用するときにすることである:

<a href="{{ path('my_route', {'name': 'my-name'}) }}">my link</a> 

生成されたURLである:

/my-name 

しかし、私はそれが欲しい:

​​私のテンプレートで指定する必要がなし

...

任意のアイデア?あなたの助けのための

おかげで、 よろしく

答えて

-2

が、これは(テストし、それが私の作品)を支援しようとしていますか?

<a href="{{ path('my_route', {'name': 'my-name'}) }}.html">my link</a> 
1

これは仕様です。デフォルトのフォーマットをhtmlと定義したので、ルータが.htmlの拡張子を持つリンクを生成する必要はありません。

拡張機能を実際に表示する場合は、defaultsリストから削除する必要があります。欠点は、このルートの形式を常に指定する必要があることです。

+1

/my-name.html感謝を。実際には、私はSEOの理由でここにいる "html"拡張子を強制する必要があるということです。だから、ルータの動作を変更する別の方法はありますか? – user1018527

+0

@ user1018527 '_format'値は特別な意味を持たないので、簡単な解決法はありません。 'Routing'コンポーネントをフォークして自分で変更する必要がありますが、これは簡単なことではありません。関連する[関数](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Generator/UrlGenerator.php#L98)があります。私の意見では、 'defaults'リストから' _format'パラメータを削除する方が簡単です。 – gilden

3

あなたが持つことはできません。

my_route: 
    pattern: /{name}.html 
    defaults: { _controller: AcmeMyBundle:Default:index} 

そして

<a href="{{ path('my_route', {'name': 'my-name'}) }}">my link</a> 

はあなたにURLを与える:あなたの答えのための

関連する問題