我正在扩展 yii2-usuario 的 registrationForm 模型,并覆盖 rules()
函数。
我的模型看起来像这样
namespace app\models\user\Form;
use Da\User\Form\RegistrationForm as BaseForm;
class RegistrationForm extends BaseForm
{
public $captcha;
public $firstname;
public $lastname;
public $password_repeat;
public function rules()
{
/** @var User $user */
$user = $this->getClassMap()->get(User::class);
return [
// username rules
'usernameLength' => ['username', 'string', 'min' => 3, 'max' => 255],
'usernameTrim' => ['username', 'filter', 'filter' => 'trim'],
'usernamePattern' => ['username', 'match', 'pattern' => '/^[-a-zA-Z0-9_\.@]+$/'],
//'usernameRequired' => ['username', 'required'],
'usernameUnique' => [
'username',
'unique',
'targetClass' => $user,
'message' => Yii::t('usuario', 'This username has already been taken'),
],
...
...
}
}
但我收到此错误
Unknown model map key: app\models\user\Form\User
在这一行 $user = $this->getClassMap()->get(User::class);
不知道如何解决这个问题。 user.php 模型位于正确的目录 app\models\user\Form\User.php
更新:
在我的 main.php
'modules' => [
'user' => [
'class' => Da\User\Module::class,
'enableEmailConfirmation' => true,
'classMap' => [
'RecoveryForm' => 'app\models\user\Form\RecoveryForm',
'RegistrationForm' => 'app\models\user\Form\RegistrationForm',
'ResendForm' => 'app\models\user\Form\ResendForm',
'User' => app\models\user\Model\User::class
],
'viewPath' => '@app/views/user',
'controllerMap' => [
'registration' => [
'class' => app\controllers\user\RegistrationController::class, //\Da\User\Controller\RegistrationController::class,
'on ' . \Da\User\Event\FormEvent::EVENT_AFTER_REGISTER => function (\Da\User\Event\FormEvent $event) {
\Yii::$app->session->setFlash('info', Yii::t('usuario', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.'));
\Yii::$app->controller->redirect(['/user/security/login']);
},
'on ' . \Da\User\Event\FormEvent::EVENT_AFTER_RESEND => function (\Da\User\Event\FormEvent $event) {
\Yii::$app->session->setFlash('info', Yii::t('usuario', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.'));
\Yii::$app->controller->redirect(['/user/security/login']);
},
],
],