mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-21 23:46:54 +01:00
183 lines
6.0 KiB
Plaintext
183 lines
6.0 KiB
Plaintext
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|CWebApplication::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|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](http://www.pradosoft.com/).
|
|
Dla ludzi, którzy chcą utworzyć swoje własne generatory widoków, [CPradoViewRenderer]
|
|
jest dobrym przykładem.
|
|
|
|
Używanie`CPradoViewRenderer`
|
|
--------------------------
|
|
|
|
Aby móc używać [CPradoViewRenderer] musimy jedynie skonfigurować aplikację w następujący sposób:
|
|
|
|
~~~
|
|
[php]
|
|
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](/doc/guide/basics.convention#directory).
|
|
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.
|
|
|
|
> Tip|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:
|
|
|
|
~~~
|
|
[php]
|
|
<%= CHtml::textField($name,'value'); %>
|
|
<% foreach($models as $model): %>
|
|
~~~
|
|
|
|
tłumaczone jest na
|
|
|
|
~~~
|
|
[php]
|
|
<?php echo CHtml::textField($name,'value'); ?>
|
|
<?php foreach($models as $model): ?>
|
|
~~~
|
|
|
|
### Tagi komponentów
|
|
|
|
Tagi komponentów używane są do wstawiania [widżetu](/doc/guide/basics.view#widget) do widoku. Używają one następującej składni:
|
|
|
|
~~~
|
|
[php]
|
|
<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 ](/doc/guide/basics.namespace) 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:
|
|
|
|
~~~
|
|
[php]
|
|
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
|
|
~~~
|
|
|
|
would be translated as
|
|
|
|
~~~
|
|
[php]
|
|
<?php $this->widget('CCaptcha', array(
|
|
'captchaAction'=>'captcha',
|
|
'showRefreshButton'=>false)); ?>
|
|
~~~
|
|
|
|
> Note|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](/doc/guide/caching.fragment).
|
|
Ich składnia jest następująca:
|
|
|
|
~~~
|
|
[php]
|
|
<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 part właściwość-wartość są używane do konfiguracji dla
|
|
buforowania fragmentarycznego, na przykład
|
|
|
|
~~~
|
|
[php]
|
|
<cache:profile duration={3600}>
|
|
// użyj tutaj informacji z profilu
|
|
</cache:profile >
|
|
~~~
|
|
będzie przetłumaczone na
|
|
|
|
~~~
|
|
[php]
|
|
<?php if($this->beginCache('profile', array('duration'=>3600))): ?>
|
|
// zawatość profilu użytkownika
|
|
<?php $this->endCache(); endif; ?>
|
|
~~~
|
|
|
|
### Tagi klipsa (ang. Clip Tags)
|
|
|
|
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:
|
|
|
|
~~~
|
|
[php]
|
|
<clip:clipID>
|
|
// zawartość klipsa
|
|
</clip:clipID >
|
|
~~~
|
|
|
|
gdzie `clipID` jest identyfikatorem, który jednoznacznie identyfikuje zawartość klipsa.
|
|
Tagi klipsa będą przetłumaczone jako
|
|
|
|
~~~
|
|
[php]
|
|
<?php $this->beginClip('clipID'); ?>
|
|
// zawartość klipsa
|
|
<?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,
|
|
|
|
~~~
|
|
[php]
|
|
<!---
|
|
komentarz w widoku, który zostanie wycięty
|
|
--->
|
|
~~~
|
|
|
|
Mieszanie formatów szablonów
|
|
-----------------------
|
|
|
|
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.
|
|
|
|
|
|
<div class="revision">$Id: topics.prado.txt 3226 2011-05-18 10:37:47Z mdomba $</div> |