如何在yii2中将自定义控制器添加到供应商文件夹中的扩展名?

时间:2017-07-07 10:16:33

标签: php yii2 yii2-basic-app yii2-model yii2-user

我有一个扩展名yii2-admin用于RBAC,我想在此扩展中添加另一个控制器,视图,模型等。因为在这个模块中我想保留所有操作管理员如CRUD for User表和另一个。

添加它的正确方法是什么?因为要在文件夹供应商中添加自定义文件,这是不好的方法。

1 个答案:

答案 0 :(得分:1)

如果您使用模块来管理授权控制,您可以这样做

假设您的模块名为auth

在config / main.php中为auth分配模块

 'modules' => [
            .....
    'auth'=> [    // your module for authorization (rbac) 
        'class' => 'vendor\your_vendor_name\auth\Module',
    ],

然后在vendor\your_vendor_name\auth\Module.php 您应该使用此代码为与auth模块相关的所有控制器设置controllerNamespace

  namespace vendor\your_vendor_name\auth;

  use \yii\base\Module as BaseModule;

  /**
   * This is the main module class for the    auth .
   *
   *
   * 
   */
  class Module extends BaseModule
  {
      public $controllerNamespace = 'vendor\your_vendor_name\auth\controllers';

      const VERSION = '1.0.0-dev';

      public function init()
      {
          parent::init();

          // custom initialization code goes here
      }
  }

此时您可以在

中添加所需的所有控制器
 `vendor\your_vendor_name\auth\controllers\` 

中的模型
 `vendor\your_vendor_name\auth\models\` 

和观看次数

in

     `vendor\your_vendor_name\auth\views\` 

例如:对于vendor\your_vendor_name\auth\controllers\中的控制器,我有

  AuthAssignmentController.php
  AuthItemChildController.php
  AuthItemController.php
  AuthRuleController.php
  DefaultController.php 

每个都管理相关模型的CRUD