无法使用getModule()从模块文件注册CSSFile()

时间:2014-07-23 14:36:07

标签: php yii

而不是在我的视图中调用/注册CSS。我想在我的AbcModule.php中注册它,因为CSS将通过模块使用。

class Abc extends CWebModule
{

    protected $_assetsUrl;

    public function init()
    {
        $path = Yii::app()->module->getAssetsUrl();

        Yii::app()->clientScript->registerCssFile($path.'/css/abc.css', 'all');

       $this->setImport(array(
        'abc.models.*',
        'abc.components.*',
       ));

   }

   public function getAssetsUrl()
    {
        if ($this->_assetsUrl === null)
            $this->_assetsUrl = Yii::app()->getAssetManager()->publish(__DIR__ . '/assets', false, -1, true);
        return $this->_assetsUrl;
    }
}

在上面的代码中我得到此错误

Missing argument 1 for CModule::getModule(), called in /Library/WebServer/Documents/dev/common/lib/yii/framework/base/CComponent.php on line 111 and defined

是这一行

$path = Yii::app()->module->getAssetsUrl();

我也试过

$path = Yii::app()->getModule("Abc")->getAssetsUrl();

但是出现了这个错误

Fatal error: Call to a member function getAssetsUrl() on a non-object in /Library/WebServer/Documents/dev/frontend/modules/research/AbcModule.php on line 17
在我看来,我称之为这样。它完美无缺

Yii::app()->clientScript->registerCssFile($this->module->getAssetsUrl().'/css/abc.css', 'all');

知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

$path = $this->getAssetsUrl();