1

一部のユーザーをカスタム管理フォームに保存しようとしていますが、特定のグループに設定したいと思いsfGuardUserGroupます.

したがって、作成したばかりのユーザーの ID が 25 の場合、sfGuardUserGroup表にuser_idは 25 と のgroup_idエントリが期待されます8(これらのユーザーを追加したいグループ ID は 8 です)。

フォームクラスまたはprocessFormアクションでこれを行うことはできますか?

私は教義とSF1.4を使用しています

ありがとう

4

2 に答える 2

1

これはあなたが必要とすることをするはずです:

<?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;
  }
}
于 2011-04-21T13:42:52.143 に答える
0

作成されたすべての 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 アクションにロジックを追加することは正しくありません。

于 2011-04-21T13:01:55.680 に答える