如何在yii2中覆盖控制器、模型和视图

如何在yii2中覆盖控制器、模型和视图,yii2,Yii2,如何在我的主题的配置中重写类模块?我尽了最大的努力 return [ ... 'modules' => [ 'shop' => [ 'class' => 'app\modules\shop\ShopModule', 'components' => [ 'manager' => [ 'class' => 'app\web\theme

如何在我的主题的配置中重写类模块?我尽了最大的努力

return [
   ...
   'modules' => [
       'shop' => [
        'class' => 'app\modules\shop\ShopModule',
           'components' => [
               'manager' => [
                   'class' => 'app\web\theme\modules\shop\Customer',
               ],
           ],
    ],
...
  ],

];
覆盖控制器

有时您可能需要覆盖默认的Yii2用户控制器。这非常简单,需要两个步骤。 步骤1:创建新控制器

首先,您需要在自己的命名空间下创建新的控制器(我们建议使用app\controllers\user),并从需要的Yii2用户控制器扩展它

例如,如果要覆盖AdminController,则应
创建app\controllers\user\AdminController
并从devtrium\user\controllers\AdminController:扩展它

<?php

namespace app\controllers\user;

use dektrium\user\controllers\AdminController as BaseAdminController;

class AdminController extends BaseAdminController
{
    public function actionCreate()
    {
        // do your magic
    }
}

请进一步解释您的问题。例如:视图重新定义,模型失败。比您提出的问题更重要。什么不清楚?我在YII2上有一个网站。创建具有自己主题和配置的文件夹。配置覆盖了原始站点的提交。现在我需要覆盖你的主题中的一个类模块。对不起,我仍然完全不知道你想做什么,或者你想得到什么帮助。您试图覆盖什么?此功能模块YII2用户在通常的YII2中不受支持。问题解决了,所以,在他的主题的输入脚本中,他添加了:Yii::$classMap['app\modules\review\models\ModelName']='@app/web/theme/module/models/review/ModelName.php';
<?php return [
    ...
    'modules' => [
        ...
        'user' => [
            'class' => 'dektrium\user\Module',
            'controllerMap' => [
                'admin' => 'app\controllers\user\AdminController'
            ],
            ...
        ],
        ...
    ],