sf_guard_user
中的,email_address
和username
是必需的,但我想将该电子邮件用作username
所以,我想从表单中删除其中一个字段,但是因为它是必需的,我总是会收到错误,而我正在设置username
= email_address
反之亦然,我已尝试过动作,形式和模型,但没有成功......
认为在sfGuardUser
模型中编写一个名为getUsername()
的函数并返回电子邮件就足够了,但没有........
这可能吗? 我该怎么办?
感谢
答案 0 :(得分:2)
原因有可能。你甚至不必乱用架构。只需在用户名和email_address中存储电子邮件。
class sfGuardUserForm extends PluginsfGuardUserForm
{
public function doSave($con = null)
{
//update object with form values
$this->updateObject();
$this->getObject()->setUsername($this->getObject()->getEmailAddress());
return parent::doSave($con);
}
}
答案 1 :(得分:0)
覆盖Object :: save()函数中的用户名字段要好得多 - 这样它就可以处理所有表单。
在您的表单中,您将覆盖用户名窗口小部件的验证程序。如果需要,您还可以隐藏小部件。
class sfGuardUserAdminForm extends BasesfGuardUserAdminForm
{
public function setup()
{
parent::setup();
$this->setWidget('username', new sfWidgetFormInputHidden());
$this->setValidator('username', new sfValidatorPass());
}
}
和
class sfGuardUser extends PluginsfGuardUser
{
public function save(Doctrine_Connection $conn = null){
$this->setUsername($this->getEmailAddress());
parent::save($conn);
}
}