Uwaga: Ta sekcja nie została jeszcze ukończona.
Dzięki obiektowi View możesz rejestrować skrypty w aplikacji. Przeznaczone są do tego dwie dedykowane metody: registerJs() dla skryptów wbudowanych oraz registerJsFile() dla skryptów zewnętrznych. Skrypty wbudowane są przydatne przy konfiguracji oraz dynamicznym generowaniu kodu. Możesz dodać je w następujący sposób:
$this->registerJs("var options = " . json_encode($options) . ";", View::POS_END, 'my-options');
Pierwszy argument przekazywany do metody registerJs
to kod JavaScript, który chcemy umieścić na stronie. Jako drugi argument wskazujemy miejsce,
w którym skrypt ma zostać umieszczony na stronie. Możliwe wartości to:
head
.<body>
.</body>
.ready
na dokumencie. Ta opcja zarejestruje automatycznie jQueryload
na dokumencie. Ta opcja zarejestruje automatycznie jQueryOstatnim argumentem jest unikalne ID skryptu, które jest używane do zidentyfikowania bloku kodu i zastąpienia go, jeśli taki został już zarejestrowany. Jeśli ten argument nie zostanie podany, kod JavaScript zostanie użyty jako ID.
Skrypt zewnętrzny może zostać dodany następująco:
$this->registerJsFile('https://example.com/js/main.js', ['depends' => [\yii\web\JqueryAsset::class]]);
Argumenty dla metod registerCssFile() są podobne do registerJsFile().
W powyższym przykładzie, zarejestrowaliśmy plik main.js
z zależnością od JqueryAsset
. Oznacza to, że plik main.js
zostanie dodany PO pliku jquery.js
.
Bez określenia tej zależności, względny porządek pomiędzy main.js
a jquery.js
nie zostałby zachowany.
Tak jak i w przypadku registerCssFile(), mocno rekomendujemy, abyś użył assetów do zarejestrowania zewnętrznych plików JS zamiast używania registerJsFile().
Jak zostało wspomniane wcześniej, korzystniejsze jest stosowanie assetów, zamiast kodu CSS i JS bezpośrednio (po informacje na ten temat sięgnij do sekcji menedżera assetów). Korzystanie z już zdefiniowanych pakietów jest bardzo proste:
\frontend\assets\AppAsset::register($this);
Możesz zarejestrować kod CSS przy użyciu metody registerCss() lub registerCssFile().
Pierwsza z nich rejestruje blok kodu CSS, natomiast druga zewnętrzny plik .css
. Dla przykładu:
$this->registerCss("body { background: #f00; }");
Powyższy kod doda kod CSS do sekcji head
strony:
<style>
body { background: #f00; }
</style>
Jeśli chcesz określić dodatkowe właściwości dla tagu style
, przekaż tablicę nazwa => wartość
jako drugi argument.
Jeśli chcesz się upewnić, że jest tylko jeden tag style
, użyj trzeciego argumentu, tak jak zostało to opisane dla meta tagów.
$this->registerCssFile("https://example.com/css/themes/black-and-white.css", [
'depends' => [BootstrapAsset::class],
'media' => 'print',
], 'css-print-theme');
Kod powyżej doda link w sekcji head
strony do pliku CSS.
<link>
. Opcja depends
jest obsługiwana w specjalny sposób, od niej zależy położenie pliku CSS.
W tym przypadku, plik link do pliku CSS zostanie umieszony ZA plikami CSS w yii\bootstrap\BootstrapAsset,Jest mocno wskazane używanie assetów do rejestrowania zewnętrznych plików CSS. Użycie ich pozwala Ci na łączenie i kompresowanie wielu plików CSS, które jest wręcz niezbędne na stronach internetowych o dużym natężeniu ruchu.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.