2012-06-20 2 views
6

Yii 응용 프로그램 용 위젯을 만들고 있습니다. 기본 레이아웃보기는 jQuery 및 jQueryUI와 같은 모든 공통 스크립트 파일을 등록합니다. 내 위젯에서 이미 jQueryUI에 의존하는 jQueryUI 플러그인을 사용하려고합니다.yii의 등록 된 스크립트 파일 순서 변경

스크립트에 포함 된 페이지의 위치를 ​​지정할 수 있지만 실제로는 "끝"에 포함시키지 않는 것 같습니다. 플러그인 뒤에로드해야하는 다른 스크립트가 있으면 어떻게해야합니까? ? 적법한 순서로 적재되었는지 확인하십시오. 누구에게 아이디어가 있습니까?

+0

위치를 지정할 수 있습니다. [registerScript] (http://www.yiiframework.com/doc/api/1.1/CClientScript/#registerScript-detail) 및/또는 [registerScriptFile] (http://www.yiiframework.com/doc/)에 대한 설명서를 참조하십시오. api/1.1/CClientScript/# registerScriptFile-detail) – adamors

+0

감사합니다. 그러나이 사실을 알고있었습니다. POS_BEGIN, POS_END 및 POS_READY의 세 위치 중 하나를 지정할 수 있습니다.이 위치는 모든 플러그인을 POS_BEGIN에로드해야하지만 일부는 기본 레이아웃에서 가져오고 일부는 위젯에서로드해야하는 경우 도움이되지 않습니다. – Hippyjim

+0

나는 zii 위젯의 소스를 탐색 해 보았는가? – adamors

답변

11

Yii script packages의 종속성 기능을 사용할 수 있습니다. 나는 similar problem before을 가졌습니다. 예를 들어

당신이 스크립트 패키지는 위의 샘플에서

'clientScript' => array(
    'packages' => array(
    'package1' => array(
      'basePath' => 'path.to.package1', 
      'js' => array(
       'package1.js', 
     ), 
      'css' => array(
       'package1.css' 
     ), 
    ), 
    'package2' => array(
      'basePath' => 'path.to.package2', 
      'js' => array(
       'package2.js', 
     ), 
      'css' => array(
       'package2.css' 
     ), 
      'depends' => array(
       'package1', 
     ) 
    ), 
    'package3' => array(
      'basePath' => 'path.to.package3', 
      'js' => array(
       'package3.js', 
     ), 
      'css' => array(
       'package3.css' 
     ), 
      'depends' => array(
       'package2', 
     ) 
    ), 
    ) 
) 

, 아래와 같이 config (설정)이, package2package1package3package2을 필요로 필요 (따라 다름). 위젯이 package2을 사용하고 다른 스크립트가 package3을 사용한다고 가정 해 보겠습니다. 위젯을 렌더링하지 않아도 Yii::app()->clientScript->registerPackage('package3');을 사용하는 경우 package2이 자동으로 설치되며 package2 전에 package1을 설치합니다. 이전에 일부 스크립트에서 이미 package1이 필요하면 설치되지 않습니다.

+0

+1, 좋아 보인다, 왜 내가 이것을 생각하지 않았어! –

+0

좋은 물건, 감사합니다 Petra, 그것은 내가 필요로했던 정확하게 것이다. – Hippyjim