yii2 - 如何在 yii2 中覆盖 Controller 、模型、 View

标签 yii2

如何覆盖我的主题配置中的类模块?我试过了,根本不可能。

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

];

最佳答案

覆盖 Controller

有时您可能需要覆盖默认的 Yii2 用户 Controller 。这非常简单,只需两步。 第 1 步:创建新 Controller

首先,您需要在自己的命名空间下创建新的 Controller (我们推荐 app\controllers\user),并从所需的 Yii2-user Controller 扩展它。

例如,如果您想覆盖 AdminController,您应该 create app\controllers\user\AdminController并扩展它from dektrium\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
    }
}

第 2 步:将 Controller 添加到 Controller map

为了让 Yii2 用户了解您的 Controller ,您应该将其添加到 Controller 映射中,如下所示:

<?php return [
    ...
    'modules' => [
        ...
        'user' => [
            'class' => 'dektrium\user\Module',
            'controllerMap' => [
                'admin' => 'app\controllers\user\AdminController'
            ],
            ...
        ],
        ...
    ],

对于覆盖 View click here

关于yii2 - 如何在 yii2 中覆盖 Controller 、模型、 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411757/

相关文章:

yii2 - 使用干净的 url 在 yii2 中的超链接中传递多个参数,Html::a() 不会生成干净的 url

nginx - yii2 中的速率限制与使用 nginx 进行速率限制

yii2 - 如何在Yii2迁移中将数据类型设置为长文本

php - Yii2 Rest Api 自定义错误响应

html - 在引导列中并排放置 2 个表单字段

module - Yii2 禁用供应商模块的 Assets

Yii2 控制台命令传递带有名称的参数

php - 如何在yii2中使用contact_ws?

php - Yii2 - 分页查询

php - Yii2:如何格式化 ActiveField 中的值?