2011-08-16 9 views
1

私はuserテーブルとarticleテーブルを持っています。 symfonyの生成フォームを使用して新しい記事を作成する場合、ユーザドロップダウン/セレクトは、ユーザ名の代わりに数字(1,2,3などのユーザID番号)を表示します。Symfony sfWidgetFormDoctrineChoiceは実際の値の代わりにID番号を表示します

この選択要素にID番号の代わりにユーザー名が入力されていることを確認するために、私は明らかにフォームを上書きすることができますが、私はSymfonyが既にこれを考え出したと思いました。私は行方不明でした...

デフォルトで名前が表示されるのですか、何か問題がありましたか?

答えて

5

実際には、モデルの__toString()メソッドが呼び出されます。モデル内でそれをオーバーライドして、任意の文字列値を返すことができます。

class User extends BaseUser { 
    public function __toString() { 
    return $this->getUsername(); 
    } 
} 

また、「メソッド」オプションを選択ウィジェットに渡すこともできます。例えば:私は `getUsername`メソッドを宣言しない

新しいsfWidgetFormDoctrineChoice(配列( 'モデル' => 'ユーザー'、 '方法' => 'getUsername'))

+0

?フォームクラスでは? –

+0

モデルのユーザーに列のユーザー名がある場合は、getUsername()がそれを返します。 – Gerry

1

私は自分自身で問題を把握しました。基本的にnameという名前のテーブルカラムがある場合、Symfonyは自動的にこのフィールドを使用してドロップダウンメニューを設定します。私はusernameを使用しています。かなりクールなデザインアイデアですが、私はSymfonyのドキュメントでそれを読んで覚えていません。しかたがない。

関連する問題