首页 > 解决方案 > Yii2 未知模型映射键

问题描述

我正在扩展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']);
                        },
                    ],
                ],

标签: phpyii2

解决方案


推荐阅读