Prasad Patel
Prasad Patel

Reputation: 747

Include helper class in view

I am working on a requirement of where I have to include all common methods like pagination, etc. which were used in my views into all my views. For this purpose I thought helper file is useful and created helper file in common\helpers\ directory with name Common as helper file name. I am facing difficulty in using this helper file in my view file.

I have included this helper file in my view as

use common\helpers\Common;

When I open the page I am getting error as "Class 'common\helpers\Common' not found"

My helper file: 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---
  -----
}

I googled for this & got few solutions but they never worked.

Upvotes: 0

Views: 283

Answers (1)

rob006
rob006

Reputation: 22174

You need to declare your new namespace in your composer.json:

"autoload": {
    "psr-4": {
        ...
        "common\\": "common/"
    }
},

And the run:

composer dump-autoload

Alternatively you could declare alias for new namespace, so Yii autoloader will handle it (like in advanced template):

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

But Yii autoloader will be dropped in Yii 2.1, so I would stick to composer-way (or do both - alias may be useful not only for autoloading).

Upvotes: 1

Related Questions