Korzystanie z alternatywnych składni szablonów
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.
UżywanieCPradoViewRenderer
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
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
<?php echo CHtml::textField($name,'value'); ?>
<?php foreach($models as $model): ?>
Tagi komponentów
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 ...>
</com:WidgetClass>
<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} />
would be translated as
<?php $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
Tagi buforowania są skrótami używanymi do buforowania fragmentarycznego.
Ich składnia jest następująca:
<cache:fragmentID property1=value1 property2=value2 ...>
</cache:fragmentID >
gdzie fragmentID powinien być identyfikatorem, który jednoznacznie definiuje zawartość,
która zostanie zbuforowana a part właściwość-wartość są używane do konfiguracji dla
buforowania fragmentarycznego, na przykład
<cache:profile duration={3600}>
</cache:profile >
będzie przetłumaczone na
<?php if($this->cache('profile', array('duration'=>3600))): ?>
<?php $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>
</clip:clipID >
gdzie clipID jest identyfikatorem, który jednoznacznie identyfikuje zawartość klipsa.
Tagi klipsa będą przetłumaczone jako
<?php $this->beginClip('clipID'); ?>
<?php $this->endClip(); ?>
Tagi komentarza
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.
$Id: topics.prado.txt 1983 2010-03-31 19:46:37Z qiang.xue $