1

datetimepicker私はassets フォルダを持つコンポーネントを持っていますjsが、それは空ではありませんcss:img

application/components
application/components/datetimepicker/assets
application/components/datetimepicker/assets/js
application/components/datetimepicker/assets/css
application/components/datetimepicker/assets/img

からのメソッドassetsへの1回の呼び出しでフォルダー全体を公開しようとします:publishyii Asset Manager

$assetsPath = Yii::getPathOfAlias('datetimepicker.assets');
$assetsUrl = Yii::app()->assetManager->publish($assetsPath, false, -1, true);

しかし、それは何も公開しません。フォルダーの下のすべてのフォルダーとファイルにapplication/は、書き込みと読み取りのアクセス許可があります。誰か助けてくれませんか?

PS私はそれYii::getPathOfAlias('datetimepicker.assets')が正しいパスをYii::app()->assetManager->publish($assetsPath, false, -1, true)返し、合理的な文字列を返すことを確認しました - /assets/d4a0c9d8。また、ディレクトリyii全体を-という名前でコピーしますが、このフォルダー内のファイルへのリンクが html 出力ファイルに生成されます。application/components/datetimepicker/assets/application/assetsd4a0c9d8application/assets/d4a0c9d8

4

1 に答える 1

1

OK、Assets Manager の概念を誤解していました。このpublishメソッドは、カスタム ウィジェットのディレクトリからメインassestsディレクトリにファイルをコピーするだけです。(つまりto publish== to copy) また、スクリプトと css ファイルを登録して、それらの順序を示す必要があります。右?

public function registerAssetJs($jsFile, $position = NULL)
{
    Yii::app()->getClientScript()->registerScriptFile($this->getAssetsUrl() . "/js/{$jsFile}", $position);
}

public function registerAssetCss($cssFile, $media = '')
{
    Yii::app()->getClientScript()->registerCssFile($this->getAssetsUrl() . "/css/{$cssFile}", $media);
}   

public function getAssetsUrl()
{
    if (isset($this->_assetsUrl))
        return $this->_assetsUrl;
    else
    {
        $assetsPath = Yii::getPathOfAlias('datetimepicker.assets');
        $assetsUrl = Yii::app()->assetManager->publish($assetsPath, false, -1, YII_DEBUG);
        return $this->_assetsUrl = $assetsUrl;
    }
}
于 2013-07-09T12:18:19.723 に答える