在视图中包含助手 class

Include helper class in view

我正在处理一项要求,即我必须将在我的视图中使用的所有常用方法(如分页等)包含到我的所有视图中。为此,我认为帮助文件很有用,并在 common\helpers\ 目录中创建了名为 Common 的帮助文件作为帮助文件名。我在我的视图文件中使用这个帮助文件时遇到困难。

我已将此帮助文件包含在我的视图中作为

use common\helpers\Common;

当我打开页面时 我收到错误 "Class 'common\helpers\Common' not found"

我的帮助文件:Common.php

namespace common\helpers;
class Common
{
  protected $_file;
  protected $_data = array();

  public function __construct($file)
  {
    $this->_file = $file;
  }
  public static function getCommonHtml($id=NULL)
  {
   ----
   ----
  }
  -----
  --- Some other methods---
  -----
}

我用谷歌搜索了这个,得到的解决方案很少,但它们都没有奏效。

您需要在 composer.json:

中声明新的命名空间
"autoload": {
    "psr-4": {
        ...
        "common\": "common/"
    }
},

和运行:

composer dump-autoload

或者你可以为新的命名空间声明别名,这样 Yii 自动加载器就会处理它(就像在 advanced template 中一样):

Yii::setAlias('@common', dirname(__DIR__))

但是 Yii 自动加载器将在 Yii 2.1 中被删除,所以我会坚持使用 composer-way(或者两者都做 - 别名可能不仅对自动加载有用)。