Symfony1 symfony-将用户添加到表单中的组(sfGuardUserGroup)
我正在尝试将一些用户保存在自定义管理表单中,并希望将它们设置在特定的组中,即Symfony1 symfony-将用户添加到表单中的组(sfGuardUserGroup),symfony1,symfony-1.4,symfony-forms,Symfony1,Symfony 1.4,Symfony Forms,我正在尝试将一些用户保存在自定义管理表单中,并希望将它们设置在特定的组中,即sfGuardUserGroup中 因此,如果我刚刚创建的用户id为25,那么我希望在sfGuardUserGroup表中有一个条目,其中user\u id为25,group\u id为8(8是我要将这些用户添加到的组id) 我可以在form类中或在processForm操作中执行此操作吗 我用的是条令和SF1.4 谢谢如果您需要为所有创建的sfGuardUser创建此行为,则应将此逻辑放入sfGuardUser类的模型
sfGuardUserGroup
中
因此,如果我刚刚创建的用户id为25,那么我希望在sfGuardUserGroup
表中有一个条目,其中user\u id
为25,group\u id
为8
(8是我要将这些用户添加到的组id)
我可以在form类中或在processForm
操作中执行此操作吗
我用的是条令和SF1.4
谢谢如果您需要为所有创建的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操作添加逻辑是不正确的,因为您将在控制器中放置业务逻辑。如果您需要为所有创建的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操作添加逻辑将是不正确的,因为您将在控制器中放置业务逻辑。这将满足您的需要:
<?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;
}
}
这应该满足您的需要:
<?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;
}
}
用户对组的设置将在save()
方法中?我添加了一个代码示例。这将适用于在该类的模型中创建为它的sfGuardUser对象的所有实例。感谢您的代码。但是它给了我一个错误:orderAdminProfileForm::save()的声明应该与sfFormObject::save()的声明兼容。
它应该放在sfGuardUser类中(模型不是表单)。如果需要将组添加到sfGuardUser的所有实例中,则会出现这种情况。如果不使用Evilly提供的示例,用户对组的设置将在save()
方法中?我添加了一个代码示例。这将适用于在该类的模型中创建为它的sfGuardUser对象的所有实例。感谢您的代码。但是它给了我一个错误:orderAdminProfileForm::save()的声明应该与sfFormObject::save()的声明兼容。
它应该放在sfGuardUser类中(模型不是表单)。如果需要将组添加到sfGuardUser的所有实例中,则会出现这种情况。如果没有,请使用evilceleryNOTE提供的示例:您可以将parent::save($con)行移到末尾,以避免对DB进行两次保存。好的,因此这似乎对用户的初始创建起作用。但是当我尝试编辑时,我得到了一个错误:SQLSTATE[23000]:完整性约束冲突:1062重复条目'31-3'用于键'PRIMARY'
,如果我随后将parent::save()移动到我得到的末尾:注意:未定义变量:user
我添加了一个检查,应该修复完整性约束冲突OK,检查记录是否为新记录
。似乎可以工作,只需要再做一些测试。注意:您可以将parent::save($con)行移到末尾,以避免对数据库进行两次保存。好的,这似乎可以在用户的初始创建时工作。但是当我尝试编辑时,我得到了一个错误:SQLSTATE[23000]:完整性约束冲突:1062重复条目'31-3'用于键'PRIMARY'
,如果我随后将parent::save()移动到我得到的末尾:注意:未定义变量:user
我添加了一个检查,应该修复完整性约束冲突OK,检查记录是否为新记录
。看起来很有效,只需要再做几次测试