Wymuszanie kolejności skryptów z metody registerScript w Yii

Stworzyłem widget, który rejestruje swój własny skrypt, jak poniżej

class MyWidget extends CWidget {
    public function run(){
        Yii::app()->clientScript->registerScript(__CLASS__, <<<JAVASCRIPT
var a = "Hello World!";
JAVASCRIPT
        , CClientScript::POS_END);
    }
}

W układzie dzwonię do widżetu w ten sposób

<?php $this->widget('MyWidget');?>
<?php echo $content;?>

Ale w pliku widoku potrzebuję zmiennej zadeklarowanej przez ten widget.

<?php 
Yii::app()->clientScript->registerScript('script', <<<JAVASCRIPT
    alert(a);
JAVASCRIPT
    , CClientScript::POS_END);
?>

Zauważ, że zarówno w metodzie registerScript używam POS_END jako pozycji skryptu, ponieważ zamierzam umieścić wszystkie skrypty (w tym CoreScript, np. JQuery, jQueryUI itp.) Po<body> etykietka.

Problem polega na tym, że renderowany skrypt pokaże ten z pliku widoku, a następnie ten z widżetu.

alert(a);
var a = "Hello World!";

Jak widzimy, powyższy kod nie będzie działać, więc muszę umieścić drugą linię nad pierwszą linią.

Masz jakiś pomysł, jak wymusić zamówienie? Nie mam nic przeciwko przedłużeniuCClientScript (i tworzenie nowegoregisterScript metoda), o ile wszystkie skrypty będą renderowane w pozycji końcowej i nie muszę wyciągać tych wbudowanych kodów Javascript powyżej do nowego pakietu lub pliku.

questionAnswers(5)

yourAnswerToTheQuestion