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 ``; natomiast tag z wyrażeniem `<% statement %>` jest tłumaczony na ``. Na przykład: ~~~ [php] <%= CHtml::textField($name,'value'); %> <% foreach($models as $model): %> ~~~ tłumaczone jest na ~~~ [php] ~~~ ### 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] // zawartość ciała widżetu // widżet bez zawartości ciała ~~~ 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] ~~~ would be translated as ~~~ [php] 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] // zawartość, która będzie zbuforowana ~~~ 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] // użyj tutaj informacji z profilu ~~~ będzie przetłumaczone na ~~~ [php] beginCache('profile', array('duration'=>3600))): ?> // zawatość profilu użytkownika 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] // zawartość klipsa ~~~ gdzie `clipID` jest identyfikatorem, który jednoznacznie identyfikuje zawartość klipsa. Tagi klipsa będą przetłumaczone jako ~~~ [php] beginClip('clipID'); ?> // zawartość klipsa 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] ~~~ 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.
$Id: topics.prado.txt 3226 2011-05-18 10:37:47Z mdomba $