Symfony sfWidgetFormDoctrineChoice отображает номера идентификаторов вместо фактических значений - PullRequest
1 голос
/ 17 августа 2011

У меня есть таблица user и таблица article.При создании новой статьи с использованием сгенерированных форм Symfony в раскрывающемся меню Пользователь вместо имен пользователей отображаются номера (идентификаторы пользователей, такие как 1, 2, 3 ...).

Я могуочевидно, перезаписать форму пользовательской, чтобы убедиться, что этот элемент select заполнен именами пользователей, а не их идентификационными номерами, но я подумал, что Symfony, возможно, уже выяснил бы это, и было что-то, чего мне не хватало ...

Должны ли по умолчанию показываться имена или я что-то не так сделал?

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

На самом деле, он вызовет метод модели __toString (). Вы можете переопределить его в своих моделях, чтобы вернуть любое строковое значение.

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

Кроме того, вы можете передать опцию 'method' в виджет выбора. Например:

new sfWidgetFormDoctrineChoice (array ('Model' => 'User', 'method' => 'getUsername'))

1 голос
/ 17 августа 2011

Я сам разобрался в проблеме.В основном, если у вас есть столбец таблицы с именем name, Symfony автоматически использует это поле для заполнения раскрывающегося меню.Я случайно использую username.Довольно крутая идея дизайна, но я не помню, чтобы я читал ее в документах Symfony.Ну хорошо.

...