2016-05-24 1 views
0

GETリクエストを使用して結果をページに表示する簡単なフィルタリングフォームを作成しようとしています。しかし、symfonyはフォームのすべてのフィールドにプレフィックスとしてフォーム名を追加します。これは非常に醜いURLを生成します。Symfonyフォームフィールドのプレフィックスを避けるにはどうしたらいいですか?

どうすれば避けることができますか?コメントによると

class DataFormType extends AbstractType 
{ 
    public function getName() 
    { 
     return 'prefix-you-want'; 
    } 
} 

答えて

2

+0

空の名前を使用するのは危険ですか?私はコードを深く見ていないが、そのメソッドで提供された名前を使用してフォームの登録が行われるように見える。 –

+1

私はそれが危険だったと言えば、Symfonyのチームはそれを変更させませんでした。 – Alex

0

私はあなたがそうのような接頭辞を選択することができると思いますはい、Simfony3方法のgetName()で削除されました。以前のバージョンでもそれを使用できますが、このメソッドから空の文字列を返すこともできます。バージョン> 3では、同じ目的でgetBlockPrefix()メソッドを使用する必要があります。

だから、次のようになりますあなたのコード(バージョン< 3):

class DataFormType extends AbstractType 
{ 
    // ... 

    public function getName() 
    { 
     return ''; 
    } 
} 

またはこのような

(バージョン> 3):

class DataFormType extends AbstractType 
{ 
    // ... 

    public function getBlockPrefix() 
    { 
     return ''; 
    } 
} 
+0

'タイプをロードできませんでした「プレフィックスます-希望" –

+0

私の答えを更新しました。申し訳ありませんテストは受け付けません –

+0

Symfony docsによると、getName()メソッドはこのフォーム" type "の識別子を返します。これらの識別子は、アプリケーション内で一意でなければなりません。組み込み型をオーバーライドしない限り、デフォルトのSymfony型と、アプリケーションにインストールされているサードパーティのバンドルで定義されている型とは異なるはずです。識別子の衝突を避けるために、あなたの型の前にあなたの型を置くことを考えてください._ これは間違いなく接頭辞ではないので、どちらも空にすることはできません。 –

関連する問題