jqyery w yii

Skrypty jQuery i JS w Yii

jquery yii frameworkYii 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:

 

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:

 

A co jeśli chcemy wstawić do aplikacji tylko malutki kodzik javascript? Do tego celu służy metoda RegisterScript:

 

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.