Yii pozwala deweloperom na korzystanie ze swojej ulubionej składni szablonów (np. Prado, Smarty) podczas pisania kontrolera lub widoków widżetu. Jest to możliwe poprzez utworzenie i zainstalowanie komponentu aplikacji viewRenderer.
Generator widoków przechwytuje wywołania metody CBaseController::renderFile, kompiluje plik widoku przy użyciu niestandardowej składni szablonów i generuje wynik kompilacji.
Info: Rekomenduje się używanie niestandardowej składni szablonów tylko podczas pisania widoków, które są rzadko używane ponownie. W przeciwnym przypadku, ludzie którzy chcą użyć ponownie widoku, zmuszeni są do używania tej samej, niestandardowej składni szablonów w swojej aplikacji.
W dalszej części, pokażemy jak używać CPradoViewRenderer, widoku generatora, który umożliwia deweloperowi używania składni szablonu podobnej do tej z frameworku PRADO. Dla ludzi, którzy chcą utworzyć swoje własne generatory widoków, CPradoViewRenderer jest dobrym przykładem.
CPradoViewRenderer
¶Aby móc używać CPradoViewRenderer musimy jedynie skonfigurować aplikację w następujący sposób:
return array(
'components'=>array(
......,
'viewRenderer'=>array(
'class'=>'CPradoViewRenderer',
),
),
);
Domyślnie, CPradoViewRenderer będzie kompilował pliki źródłowe widoków i zapisywał wynikowy plik PHP w katalogu runtime. Tylko wtedy, gdy plik źródłowy widoku zmienił się, plik PHP będzie przegenerowany. Dlatego też używanie CPradoViewRenderer pociąga za sobą niewielki spadek wydajności.
Wskazówka: Podczas gdy CPradoViewRenderer głównie dostarcza nowe tagi szablonu w celu tworzenia widoków w sposób łatwiejszy i szybszy, wciąż możesz używać kodu PHP w dotychczasowy sposób w plikach widoku.
W dalszej części przedstawiamy taki szablonów, które są wspierane przez CPradoViewRenderer.
Skrócone tagi PHP są skrótami do pisania wyrażeń PHP w widoku. Tag wyrażenia <%= expression %>
tłumaczony jest na <?php echo expression ?>
; natomiast tag z wyrażeniem <% statement
%>
jest tłumaczony na <?php statement ?>
. Na przykład:
<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>
tłumaczone jest na
echo CHtml::textField($name,'value'); foreach($models as $model):
Tagi komponentów używane są do wstawiania widżetu do widoku. Używają one następującej składni:
<com:WidgetClass property1=value1 property2=value2 ...>
// zawartość ciała widżetu
</com:WidgetClass>
// widżet bez zawartości ciała
<com:WidgetClass property1=value1 property2=value2 .../>
gdzie WidgetClass
określa klasę widżetu lub alias ścieżki klasy,
a inicjalna wartość właściwości może być zarówno umieszczonym w cudzysłowie łańcuchem lub też
wyrażeniem PHP zamkniętym w parę okrągłtych nawiasów. Na przykład:
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
będzie przetłumaczone na
$this->widget('CCaptcha', array( 'captchaAction'=>'captcha', 'showRefreshButton'=>false));
Uwaga: Wartość
showRefreshButton
określona jest jako{false}
zamiast"false"
ponieważ druga oznacza ciąg znaków zamiast wartości boolowskiej.
Tagi buforowania są skrótami używanymi do buforowania fragmentarycznego. Ich składnia jest następująca:
<cache:fragmentID property1=value1 property2=value2 ...>
// zawartość, która będzie zbuforowana
</cache:fragmentID >
gdzie fragmentID
powinien być identyfikatorem, który jednoznacznie definiuje zawartość,
która zostanie zbuforowana a pary właściwość-wartość są używane do konfiguracji dla
buforowania fragmentarycznego, na przykład
<cache:profile duration={3600}>
// użyj tutaj informacji z profilu
</cache:profile >
będzie przetłumaczone na
if($this->beginCache('profile', array('duration'=>3600))): // zawatość profilu użytkownika $this->endCache(); endif;
Tag jak tagi buforujące, tagi klipsa są skrótem do wywołania metody CBaseController::beginClip oraz CBaseController::endClip w widoku. Składnia dla nich jest następująca:
<clip:clipID>
// zawartość klipsa
</clip:clipID >
gdzie clipID
jest identyfikatorem, który jednoznacznie identyfikuje zawartość klipsa.
Tagi klipsa będą przetłumaczone jako
$this->beginClip('clipID'); // zawartość klipsa $this->endClip();
Tagi komentarza są używane do pisanie komentarzy w widoku, które powinny być widoczne jedynie dla deweloperów. Tagi komentarza będą wycięte podczas wyświetlania widoku użytkownikowi końcowemu. Składnia dla tagów komentarza jest następująca,
<!---
komentarz w widoku, który zostanie wycięty
--->
Poczynając od wersji 1.1.2 możliwe jest mieszanie użyć alternatywnych składni szablonów
ze zwykłą składnią PHP. Aby móc to zrobić, właściwość CViewRenderer::fileExtension
zainstalowanego renderera widoków musi zostać skonfigurowana poprzez wartość inną niż .php
.
Na przykład, jeśli właściwość ustawiona jest jako .tpl
, wtedy każdy plik widoku kończący się .tpl
będzie generowany przy użyciu zainstalowanego renderera, podczas gdy pozostałe pliki
kończące się .php
będą traktowane jak zwykłe pliki widoków PHP.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.