gpt4 book ai didi

silverstripe - 在 SilverStripe 中覆盖丢失的密码表单

转载 作者:行者123 更新时间:2023-12-04 05:16:30 26 4
gpt4 key购买 nike

默认的忘记密码表单是一个 Email 表单域。我有一个许可证号附加到每个用户。作为用户,我想通过输入我的许可证号而不是电子邮件来获取重置密码链接。

我找到了一种方法来覆盖功能方面而不是表单。到目前为止我做了什么

文件名:_config.php

Object::useCustomClass('MemberLoginForm', 'ExtendLoginForm');

文件名:ExtendLoginForm.php

就像测试一样 - 覆盖 forgotPassword 方法

class ExtendLoginForm extends MemberLoginForm
{

public function forgotPassword($data) {
// Ensure password is given

$this->sessionMessage('This works', 'bad');

$this->controller->redirect('Security/lostpassword');
return;
}
}

session 消息已成功打印并重定向到同一页面。

如何重写表单,使其成为 Text 字段而不是 Email 字段。

最佳答案

首先,这只是一个一般提示,您应该避免使用 Object::useCustomClass() 而使用 Injector (https://docs.silverstripe.org/en/3.0/reference/injector/)。 Object::useCustomClass() 更像是 2.4 的东西。

忘记密码表单在 Security 中生成。您也可以尝试使用该类的自定义实现,并重载 ForgotPasswordForm 方法。

config.yml

Injector:
Security:
class: MyCustomSecurity

MyCustomSecurity.php

class MyCustomSecurity extends Security
{
public function LostPasswordForm()
{
$form = parent::LostPasswordForm();
$form->Fields()->replaceField('Email', TextField::create('Email'));

return $form;
}
}

关于silverstripe - 在 SilverStripe 中覆盖丢失的密码表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42640933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com