symfony - добавление пользователя в группу (sfGuardUserGroup) в форме - PullRequest
1 голос
/ 21 апреля 2011

Я пытаюсь сохранить некоторых пользователей в пользовательской форме администратора, и я хотел бы установить их в определенной группе, в sfGuardUserGroup.

Итак, если пользователь, которого я только что создал, имеет идентификатор 25, то я ожидал бы запись в таблице sfGuardUserGroup с user_id, равным 25, и group_id, равным 8 (8 - это идентификатор моей группы, к которой я хочу добавить этих пользователей.)

Могу ли я сделать это в классе формы или в действии processForm? 1011 *

Я использую доктрину и SF1.4

Спасибо

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Это должно сделать то, что вам нужно:

<?php

class AdminUserForm extends sfGuardUserForm
{
  public function configure()
  {
    //customise form...
  }

  public function save($con = null)
  {
    //Do the main save to get an ID
    $user = parent::save($con);

    //Add the user to the relevant group, for permissions and authentication
    if (!$user->hasGroup('admin'))
    {
      $user->addGroupByName('admin');
      $user->save();
    }

    return $user;
  }
}
0 голосов
/ 21 апреля 2011

Если вам требуется такое поведение для всех созданных sfGuardUser, вы должны поместить эту логику в модель для класса sfGuardUser.[пример ниже]

// sfGuardUser class
public function save(Doctrine_Connection $conn = null) {

    if (!$this->hasGroup('group_name'))
        $this->addGroupByName('group_name', $conn);

    parent::save($conn);

}

Если вам требуется эта функциональность только в этой конкретной форме, вы должны поместить логику в форму.Добавление логики к действию processForm будет некорректным, поскольку вы поместите бизнес-логику в контроллер.

...