2014-04-02 4 views
0

이 질문은 Yii Framework 클래스 CAssetManager에 관한 것이지만 일반적으로 질문 할 수도 있습니다.CAssetManager를 사용하는 이유는 무엇입니까?

CAssetManager (또는 유사한 기술)을 사용하여 자바 스크립트 및 기타 파일 (보호 된 디렉토리에 보관)을 웹 액세스 가능 디렉토리에 직접 배치하고 레이아웃에 직접 링크하는 대신 웹 액세스 가능 디렉토리에 게시하는 이유는 무엇입니까/<script>의 HTML 파일

Yii 설명서에는 구체적인 내용이 포함되어 있지 않습니다. 단지 CAssetManager이 어떻게 작동하는지 설명하지만, 우리가 왜 사용해야하는지에 대해서는 아무 말도하지 않습니다.

내가 가진 유일한 이유는 CAssetsManager을 사용하면 JS, CSS 및 기타 파일을 실제로 필요할 때 게시 할 수 있다는 것입니다. 선택한보기에서만. 그것들을 레이아웃 파일에 직접 링크하면 특정 레이아웃을 사용하는 모든 뷰에 등록됩니다.

맞습니까? 다른 이유가 있습니까?

답변

1

두 단어로 구성됩니다. 예를 들어, 사용자 정의 위젯이 protected/widgets 폴더에 있습니다. 그것은 그 위젯이 렌더링 될 때만 포함되어야하는 자체 스타일과 js 파일을 가지고 있습니다. 그러나 해당 파일은 위젯의 하위 폴더 (예 : protected/widgets/your_widget/assets/css/widget.css)에 있으며 해당 파일은 보호 된 폴더에 있으므로 웹에서 액세스 할 수 없습니다. 그래서 위젯 클래스 내부 (보통 초기화에서() 메소드는) 당신은 CAssetManager를 통해 해당 폴더를 게시해야합니다 자세한 내용은 http://www.yiiframework.com/wiki/148/understanding-assets을 읽기

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

지금이

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

처럼 위젯 CSS 파일을 등록 할 수 있습니다

+0

당신의 대답은 간단히 말해서, 나는 내 자신을 알아 냈습니다. 그러나 나는 그것을 사용할 수있는 유일한 것으로 받아들이고있다! :] – trejder

관련 문제