Heim > Artikel > Backend-Entwicklung > Offizieller Yii Framework-Leitfaden, Serie 49 – Spezialthema: Verwendung von Nicht-Mainstream-Vorlagensyntax
Das Yii-Framework ermöglicht es Entwicklern, ihre bevorzugte Vorlagensyntax (wie Prado, Smarty) zu verwenden, um die Ansicht eines Controllers oder Widgets zu schreiben Dies kann durch Schreiben und Installieren einer viewRenderer-Anwendungskomponente erfolgen. Dieser Ansichtsrenderer fängt den Aufruf von CBaseController::renderFile ab, kompiliert die Ansichtsdatei mithilfe einer benutzerdefinierten Vorlagensyntax und rendert dann das endgültige Kompilierungsergebnis.
Info:Es wird empfohlen, nur dann eine benutzerdefinierte Vorlagensyntax zu verwenden, wenn Ansichten geschrieben werden, die selten wiederverwendet werden. Andernfalls wird durch die Wiederverwendung von Ansichten in der Anwendung die Verwendung derselben Vorlagensyntax erzwungen.
Als nächstes stellen wir die Verwendung von CPradoViewRenderer vor, einem Ansichtsrenderer ähnlich dem Prado-Framework, der es Entwicklern ermöglicht, eine benutzerdefinierte Vorlagensyntax zu verwenden. Wenn Sie Ihren eigenen Ansichtsrenderer entwickeln möchten, ist CPradoViewRenderer eine gute Anleitung.
CPradoViewRenderer
return array( 'components'=>array( ......, 'viewRenderer'=>array( 'class'=>'CPradoViewRenderer', ), ), );Standardmäßig kompiliert CPradoViewRenderer die Quellansichtsdateien und speichert die resultierenden PHP-Dateien nur dann, wenn die Quellansichtsdateien geändert werden. Daher führt die Verwendung von CPradoViewRenderer zu sehr geringen Leistungseinbußen .
Im Folgenden stellen wir die Template-Tags vor, die von CPradoViewRenderer unterstützt werden.
PHP-KurztagszuKurze PHP-Tags sind Abkürzungen zum Schreiben von PHP-Ausdrücken und Anweisungen in einer Ansicht. Das Ausdrucks-Tag wird in
übersetzt, während das Anweisungs-Tag
wird ><%= expression %>
<?php echo expression ?>
<% statement %>
<?php statement ?>
wird übersetzt in
<%= CHtml::textField($name,'value'); %> <% foreach($models as $model): %>
Komponenten-Tag
Komponenten-Tags werden zum Einfügen eines Widgets in eine Ansicht verwendet. Es verwendet die folgende Syntax:
<?php echo CHtml::textField($name,'value'); ?> <?php foreach($models as $model): ?>
wobei
den Namen der Widget-Klasse oder den Klassenpfad-Alias angibt und die Anfangswerte der Eigenschaft entweder in Anführungszeichen gesetzte Zeichenfolgen oder PHP-Ausdrücke in geschweiften Klammern sein können. Beispiel:<com:WidgetClass property1=value1 property2=value2 ...> // body content for the widget </com:WidgetClass> // a widget without body content <com:WidgetClass property1=value1 property2=value2 .../>
WidgetClass
würde übersetzt werden als
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
Hinweis:
Der Wert für
anstelle von
angegeben, da letzteres eine Zeichenfolge anstelle eines booleschen Werts bedeutet.<?php $this->widget('CCaptcha', array( 'captchaAction'=>'captcha', 'showRefreshButton'=>false)); ?>
Cache-Tags
Cache-Tags sind Abkürzungen für die Verwendung des Fragment-Caching. Die Syntax lautet wie folgt:
showRefreshButton
{false}
"false"
wobei
ein Bezeichner sein sollte, der den zwischengespeicherten Inhalt eindeutig identifiziert, und die Eigenschafts-Wert-Paare zum Konfigurieren des Fragment-Cache verwendet werden, beispielsweise<cache:fragmentID property1=value1 property2=value2 ...> // content being cached </cache:fragmentID >
fragmentID
würde übersetzt werden als
<cache:profile duration={3600}> // user profile information here </cache:profile >
Clip-Tags
Clip-Tags sind wie Cache-Tags Verknüpfungen zum Aufrufen von CBaseController::beginClip und CBaseController::endClip in einer Ansicht. Die Syntax lautet wie folgt:
<?php if($this->beginCache('profile', array('duration'=>3600))): ?> // user profile information here <?php $this->endCache(); endif; ?>
wobei
eine Kennung ist, die den Clip-Inhalt eindeutig identifiziert. Die Clip-Tags werden als<clip:clipID> // content for this clip </clip:clipID >
clipID
Kommentar-Tags
Kommentar-Tags werden zum Schreiben von Ansichtskommentaren verwendet, die nur für Entwickler sichtbar sein sollten, wenn die Ansicht deaktiviert ist Die Syntax für Kommentar-Tags lautet wie folgt:
<?php $this->beginClip('clipID'); ?> // content for this clip <?php $this->endClip(); ?>
2 🎜>
Ab Version 1.1.2 ist es möglich, die Verwendung einer alternativen Vorlagensyntax mit der normalen PHP-Syntax zu kombinieren. Dazu muss die Eigenschaft CViewRenderer::fileExtension des installierten View-Renderers mit a konfiguriert werden Wenn die Eigenschaft beispielsweise auf festgelegt ist, wird jede Ansichtsdatei, die mit
endet, mit dem installierten Ansichtsrenderer gerendert, während alle anderen Ansichtsdateien, die mit
<!--- view comments that will be stripped off --->