Files
yii/docs/guide/pl/topics.prado.txt
2011-06-26 17:38:50 +00:00

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>