2014-04-02 104 views
0

這個問題是關於Yii框架類CAssetManager,但也可能會被問到。爲什麼要使用CAssetManager?

使用CAssetManager(或類似技術)將Javascript和其他文件(保存在受保護的目錄中)發佈到Web可訪問的目錄後,而不是直接將它們放到可通過Web訪問的目錄並將它們直接鏈接到佈局的原因是什麼/ HTML文件<script>

Yii文檔沒有提供任何特定的內容。它只是解釋了CAssetManager是如何工作的,但沒有說什麼,爲什麼我們應該使用它。

我隨之而來的唯一理由是,在CAssetsManager中,當你真的需要它們時,你可以發佈JS,CSS和其他文件。只在選定的視圖中。將它們直接鏈接到佈局文件會使它們在每個視圖中都被註冊,並使用特定的佈局。

這是正確的嗎?還有其他原因嗎?

回答

1

只需兩個字。例如,您將自定義小部件放置在受保護/小部件文件夾中。它具有自己的樣式和js文件,只有在呈現該小部件時才應包含這些文件。但是這些文件位於小部件的子文件夾中(例如protected/widgets/your_widget/assets/css/widget.css),並且該文件無法從Web訪問,因爲它位於受保護的文件夾中。所以,你的widget類中(通常在init()方法),你應該通過CAssetManager發佈文件夾:

$this->assetsUrl = Yii::app()->assetManager->publish(Yii::getPathOfAlias('application.widgets.your_widget.assets')); 

現在,您可以瞭解更多詳細信息,閱讀http://www.yiiframework.com/wiki/148/understanding-assets這樣

Yii::app()->registerCssFile($this->assetsUrl . '/css/widget.css); 

註冊窗口小部件的CSS文件

+0

你的答案是簡單的支持,我想出了自己。但我接受它是唯一可用的! :] – trejder