2014-04-21 3 views
10

나는 별도의 프론트 엔드, 백엔드, 일반 및 콘솔 응용 프로그램 Yii2의 고급 구성을 사용하고 싶습니다. 프론트 엔드와 백엔드 애플리케이션 모두에서 사용되는 스타일 시트, js 파일 및 글꼴을 비롯한 많은 공통 자산이 있습니다. 이러한 자산을 자산 폴더에 공통으로 두는 것이 의미가 있습니다. Yii2 : 고급 구성과 공통 자산

그런 다음 내 quandry가 시작됩니다. 프론트 엔드와 애플리케이 션의 백엔드 부분에서 애셋을 관리하기 위해 별도의 AppAsset.php 파일이 필요합니다. 두 가지 경우에 따라 약간의 차이가 있기 때문입니다. (프론트 엔드, 백엔드 등을 중요한 응용 프로그램 내에서 별도의 응용 프로그램으로 참조 할 것인지 또는 큰 응용 프로그램의 하위 응용 프로그램이라고 부를 것인지 여부는 확실하지 않습니다.) 어쨌든 두 개의 AppAsset 관리자가 필요합니다 . 모든 파일 변환 (예 : scss → css) 및 파일 압축을 직접 처리하므로 자산 관리자를 구성 할 필요가 없습니다.

불행하게도, AppAsset 및 자산 번들의 문서는 모든 번들에서 특정 파일이나 디렉토리를 포함하는 방법에 대한 명확하지 않다. 내가 보는 유일한 방법은 $css, $js, 변수를 사용하여 대상을 지정하는 방법입니다. 입력 디렉토리의 경우 $ sourcePath 만 표시됩니다. 즉, 모든 단일 자바 스크립트, CSS, 이미지 등의 파일에 별도의 번들 (및 $sourcePath)을 만들어야한다는 의미입니다. 그것은 번들 전체입니다! 단일 번들에 여러 애셋 파일을 포함시키는 방법이 있습니다. 누군가 어떻게 나를 보여줄 수 있습니까?

답변

2

그럼 나는 "번들"의 목적은 당신에게 당신이 원하는 파일 벚꽃 선택을하도록하는 것입니다 생각합니다.

각 개별 파일에 대해 다른 번들을 만들 필요가 없습니다.

예를 들어, 내 슈퍼 간단한 사용자 정의 AssetManager에 나는이 있습니다

namespace frontend\assets; 
use yii\web\AssetBundle; 
use yii\web\YiiAsset; 

class CustomAsset extends AssetBundle{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/custom.css', 
     'css/custom_modals.css' 
    ]; 
} 

두 CSS folders/files은 내 프로젝트의 프론트 엔드 섹션에있는 내가 등록 할 때 CustomAsset는, 너무 거기에 위치하므로 이 AssetManager는 $css 배열을 거쳐 헤더 섹션에 추가합니다. 필요한 경우 추가 할 $js 배열에 대해서도 동일합니다. 또한 파일이 웹 액세스 가능 폴더에 있어야 함을 기억하십시오.

+3

네, 초기 질문은 문서가 매우 열악한 Yii2 초기에 나타났습니다. 그것은 향상되었지만 AssetManager의 문서는 여전히 열악합니다. 그러나, 나는 그것을 알아 냈다. 그런데 애셋이 웹에 액세스 할 수있는 폴더에 없어야합니다. AssetManager는 프로젝트의/web/assets 폴더에 자동으로 게시 (복사)합니다. 실제로 Asset.php 파일과 함께 frontent \ assets에서 원래의 자산을 유지합니다. – LarryTX

+0

쿨! 팁 래리 주셔서 감사! 난 몰랐어. – Schwoebel