Yii Framework posiada wbudowane ładowanie skryptów JS. Jak wielu pewnie z was próbowało, chciałem bez zbędnych ceregieli po prostu wstawić odnośnik do bibliotek jquery i skryptu w standardowym html’u. Niestety, albo stety taka opcja działała tylko na głównej stronie, a natomiast na podstronach niestety nie ponieważ niektóre widgety yii frameworka również kożystają z biblioteki jQuery i ją rejestrują, co powoduje konflikt…
W Yii Framework wystarczy wywołać bibliotekę jQuery w odpowiednim miejscu naszej aplikacji Yii. Co to nam daje? Jeśli nasz widget rejestruje jQuery i posiadamy jeszcze inny skrypt który tą bibliotekę rejestruje i działa na kilku innych widokach to możemy zapomnieć o o podwójnym uruchomieniu tej biblioteki, ponieważ klasa jest zabezpieczona przed tego typu błędami. Jest to bardzo dobre rozwiązanie stosowane w wielu frameworkach.
Jak uruchomić bibliotekę jQuery w Yii Framework? To bardzo proste, wystarczy zarejestrować go za pomocą kodu:
1 2 3 4 5 6 |
//Rejestrowanie bibliteki jquery do aplikacji Yii <?php Yii::app()->clientScript->registerCoreScript('jquery'); // Rejestrowanie biblioteki jquery Yii::app()->clientScript->registerCoreScript('jquery.ui'); //Rejestrowanie jquery ui ?> |
Ze względu na różne zapotrzebowanie możemy ten kod umieścić w kontrolerach lub widokach naszej aplikacji.
Aby wszystko działało naprawdę poprawnie i bez problemów powinniśmy użyć metody registerScriptFile
i w ten sposób możemy dodać w kontrolerach i widokach naszej aplikacji nowy skrypt .js, który będzie działał prawidłowo. Można również w ten sposób rejestrować pliki css za pomocą metody registerCssFile
.
A teraz dokładnie jak to zrobić można zobaczyć poniżej:
1 2 3 4 5 6 7 8 |
//Dodanie pliku js i css do aplikacji Yii <?php $baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerScriptFile($baseUrl.'/js/twoj_skrypt.js'); //Dodanie pliku javascript $cs->registerCssFile($baseUrl.'/css/twoj_css.css'); //Dodanie pliku css ?> |
A co jeśli chcemy wstawić do aplikacji tylko malutki kodzik javascript? Do tego celu służy metoda RegisterScript:
1 2 3 4 5 6 7 8 9 10 |
//Dodanie skryptu do kodu aplikacji Yii <?php $cs = Yii::app()->getClientScript(); $cs->registerScript( 'nazwa_skryptu', 'document.write("Hello World!")', //Wiadomo o co chodzi :) CClientScript::POS_END // O tym napiszę niżej. ); ?> |
Co może jeszcze się przydać w wstawianiu javascript do aplikacji yii?
Możemy wybrać miejsce w którym ma wyświetlać się nasz skrypt. Są trzy możliwości:
-w nagłówku <head> (CClientScript::POS_HEAD)
-w treści strony(w miejscu gdzie bezpośrednio wstawiony jest kod – CClientScript::POS_BEGIN)
-na samym dole strony (W celu ładowania skryptów js na samym końcu- CClientScript::POS_END)
Po więcej opcji kieruję was do dokumentacji klasy CClientScript.