symfony2: как установить атрибут пользователя (которого нет в форме) после отправки формы регистрации? - PullRequest
3 голосов
/ 18 ноября 2011

Я добавил атрибут «color» в класс User, поэтому, когда пользователь зарегистрирован, я хочу, чтобы этому пользователю был назначен случайный цвет.

Как сделать это умно?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2011

Установите его в конструкторе класса User.

Хороший пример настройки значений по умолчанию для нового пользователя можно найти в конструкторе пользователя FOSUserBundle .

Одним из преимуществ этого подхода является то, что вы не зависите от событий персистентного уровня, и он вообще работает без уровня персистентности.

1 голос
/ 18 ноября 2011

Я бы добавил событие жизненного цикла в объекте User, событие prePersist.

Определите в своем классе пользователя метод setRandomColor, который случайным образом устанавливает атрибут цвета вашего пользователя.

Затем добавьте его в конфигурацию сущности доктрины как событие prePersist.

lifecycleCallbacks:
    prePersist: [ setRandomColor ]
0 голосов
/ 18 ноября 2011

если вам нужен ваш пользовательский цвет во время одного сеанса, вы можете определить атрибут для пользователя, который делает это:

$this->getUser()->setAttribute('attr-name',$attr-value);

и получите этот атрибут с:

$this->getUser()->getAttribute('attr-name');

но, если вы хотите сохранить атрибут, как если бы он был атрибутом в таблице пользователя Вы можете

  • (очевидно) обновите вашу схему и добавьте поле в таблицу

  • получить цвет с помощью хеш-функции поверх первичного ключа таблицы пользователя.

Удачи!

...