在Yii框架中使用PHP模板引擎Twig的例子
Twig是一款快速、安全、灵活的PHP模板引擎,它内置了许多filter和tags,并且支持模板继承,能让你用最简洁的代码来描述你的模板。他的语法和Python下的模板引擎Jinjia以及Django的模板语法都非常像。 比如我们在PHP中需要输出变量并且将其进行转义时,语法比较累赘:
复制代码 代码如下:
但是在Twig中可以这样写:
复制代码 代码如下:
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
遍历数组:
复制代码 代码如下:
{% for user in users %}
* {{ user.name }}
{% else %}
No user has been found.
{% endfor %}
但是要在Yii Framework集成Twig就会遇到点麻烦了,官方网站中已经有能够集成Twig的方案,所以这里我也不再赘述。但是由于Twig中是不支持PHP语法的,所以在有些表达上会遇到困难,比如我们在写Form的视图时,经常会这么写:
复制代码 代码如下:
beginWidget('CActiveForm'); ?>
Login
-
label($model,'username'); ?>
textField($model,'username'); ?> -
label($model,'password'); ?>
passwordField($model,'password'); ?> -
error($model,'password'); ?>
endWidget(); ?>
但是这样的语法是没法在twig中表达的,所以想去扩展下Twig的功能,让他能够支持我们自定义的widget标签,然后自动解析成我们需要的代码。 总共需要两个类:TokenParser和Node,下面直接上代码:
复制代码 代码如下:
/*
* This file is an extension of Twig.
*
* (c) 2010 lfyzjck
*/
/**
* parser widget tag in Yii framework
*
* {% beginwidget 'CActiveForm' as form %}
* content of form
* {% endwidget %}
*
*/
class Yii_WidgetBlock_TokenParser extends Twig_TokenParser
{
/**
* Parses a token and returns a node.
*
* @param Twig_Token $token A Twig_Token instance
*
* @return Twig_NodeInterface A Twig_NodeInterface instance
*/
public function parse(Twig_Token $token)
{
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $stream->expect(Twig_Token::STRING_TYPE);
if($stream->test(Twig_Token::PUNCTUATION_TYPE)){
$args = $this->parser->getExpressionParser()->parseHashExpression();
}
else{
$args = new Twig_Node_Expression_Array(array(), $lineno);
}
$stream->expect(Twig_Token::NAME_TYPE);
$assign = $stream->expect(Twig_Token::NAME_TYPE);
$stream->expect(Twig_Token::BLOCK_END_TYPE);
$body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
$stream->expect(Twig_Token::BLOCK_END_TYPE);
return new Yii_Node_WidgetBlock(array(
'alias' => $name->getValue(),
'assign' => $assign,
), $body, $args, $lineno, $this->getTag());
}
/**
* Gets the tag name associated with this token parser.
*
* @param string The tag name
*/
public function getTag()
{
return 'beginwidget';
}
public function decideBlockEnd(Twig_Token $token)
{
return $token->test('endwidget');
}
}
class Yii_Node_WidgetBlock extends Twig_Node
{
public function __construct($attrs, Twig_NodeInterface $body, Twig_Node_Expression_Array $args = NULL, $lineno, $tag)
{
$attrs = array_merge(array('value' => false),$attrs);
$nodes = array('args' => $args, 'body' => $body);
parent::__construct($nodes, $attrs, $lineno,$tag);
}
public function compile(Twig_Compiler $compiler)
{
$compiler->addDebugInfo($this);
$compiler->write('$context["'.$this->getAttribute('assign')->getValue().'"] = $context["this"]->beginWidget("'.$this->getAttribute('alias').'",');
$argNode = $this->getNode('args');
$compiler->subcompile($argNode)
->raw(');')
->raw("\n");
$compiler->indent()->subcompile($this->getNode('body'));
$compiler->raw('$context["this"]->endWidget();');
}
}
?>
然后在Twig初始化的地方增加我们的语法解析类:
复制代码 代码如下:
$twig->addTokenParser(new Yii_WidgetBlock_TokenParser);
然后我们就可以在twig的模板里这么写了:
复制代码 代码如下:
{% beginwidget 'CActiveForm' as form %}
-
{{ form.label(model, 'username') }}
{{ form.textField(model, 'username') }}
-
{{ form.label(model, 'password') }}
{{ form.passwordField(model, 'password') }}
{% endwidget %}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Verwendung von Twig in CakePHP ist eine Möglichkeit, Vorlagen und Ansichten zu trennen, wodurch der Code modularer und wartbarer wird. In diesem Artikel wird die Verwendung von Twig in CakePHP vorgestellt. 1. Installieren Sie Twig. Installieren Sie zunächst die Twig-Bibliothek im Projekt. Sie können Composer verwenden, um diese Aufgabe abzuschließen. Führen Sie den folgenden Befehl in der Konsole aus: Composerrequire „twig/twig:^2.0“ Dieser Befehl wird im Anbieter des Projekts angezeigt

Mit der kontinuierlichen Weiterentwicklung der Webentwicklungstechnologie suchen immer mehr Entwickler nach flexibleren und effizienteren Template-Engines für die Entwicklung von Webanwendungen. Unter ihnen ist Twig eine sehr hervorragende und beliebte PHP-Template-Engine. Sie basiert auf dem Symfony-Framework und unterstützt unbegrenzte Erweiterungen. Sie eignet sich sehr gut für die Erstellung komplexer Webanwendungen. In diesem Artikel wird erläutert, wie Sie die Twig-Vorlagen-Engine für die Webentwicklung in PHP verwenden. 1. Einführung in die Twig-Template-Engine Twig wurde von FabienPoten entwickelt

Vorlagenbibliothek in PHP8.0: TwigTwig ist eine derzeit in PHP-Webanwendungen weit verbreitete Vorlagenbibliothek. Sie zeichnet sich durch hohe Lesbarkeit, einfache Verwendung und starke Skalierbarkeit aus. Twig verwendet eine einfache und leicht verständliche Syntax, die Webentwicklern dabei helfen kann, Textformate wie HTML, XML, JSON usw. klar und geordnet zu organisieren und auszugeben. Dieser Artikel führt Sie in die grundlegende Syntax und Funktionen von Twig und seine Verwendung in PHP8.0 ein. Die grundlegende Syntax von Twig ähnelt der von P

Bisher haben Sie die Grundkonzepte der Verwendung von Twig mit Timber beim Erstellen eines modularen WordPress-Themes kennengelernt. Wir haben auch Blockverschachtelung und Mehrfachvererbung mit Twig basierend auf dem DRY-Prinzip untersucht. Heute werden wir untersuchen, wie Sie Twig mit dem Timber-Plugin verwenden, um Anhangsbilder, WordPress-Menüs und Benutzer in Ihrem Theme anzuzeigen. Bilder in Holz Bilder sind eines der wichtigen Elemente jedes WordPress-Themes. In der normalen WordPress-Codierungspraxis werden Bilder mit PHP in normale HTML-Bild-Tags integriert. Timber bietet jedoch eine ziemlich umfassende Möglichkeit, img-Tags (Bild) zu verarbeiten, die modular und sauber ist.

Mit der kontinuierlichen Weiterentwicklung der Cloud-Computing-Technologie ist die Datensicherung zu etwas geworden, das jedes Unternehmen durchführen muss. In diesem Zusammenhang ist es besonders wichtig, ein hochverfügbares Cloud-Backup-System zu entwickeln. Das PHP-Framework Yii ist ein leistungsstarkes Framework, das Entwicklern dabei helfen kann, schnell leistungsstarke Webanwendungen zu erstellen. Im Folgenden wird vorgestellt, wie Sie mit dem Yii-Framework ein hochverfügbares Cloud-Backup-System entwickeln. Entwerfen des Datenbankmodells Im Yii-Framework ist das Datenbankmodell ein sehr wichtiger Teil. Denn das Datensicherungssystem erfordert viele Tabellen und Beziehungen

Da die Nachfrage nach Webanwendungen weiter wächst, haben Entwickler bei der Auswahl von Entwicklungsframeworks immer mehr Möglichkeiten. Symfony und Yii2 sind zwei beliebte PHP-Frameworks. Sie verfügen beide über leistungsstarke Funktionen und Leistung. Welches Framework ist jedoch besser geeignet, wenn es darum geht, umfangreiche Webanwendungen zu entwickeln? Als nächstes führen wir eine vergleichende Analyse von Symphony und Yii2 durch, um Ihnen zu helfen, eine bessere Wahl zu treffen. Grundlegende Übersicht Symphony ist ein Open-Source-Webanwendungs-Framework, das in PHP geschrieben ist und darauf aufbaut

Das Yii-Framework ist ein Open-Source-PHP-Webanwendungsframework, das zahlreiche Tools und Komponenten zur Vereinfachung des Prozesses der Webanwendungsentwicklung bereitstellt, wobei die Datenabfrage eine der wichtigen Komponenten ist. Im Yii-Framework können wir eine SQL-ähnliche Syntax verwenden, um auf die Datenbank zuzugreifen und Daten effizient abzufragen und zu bearbeiten. Der Abfrage-Builder des Yii-Frameworks umfasst hauptsächlich die folgenden Typen: ActiveRecord-Abfrage, QueryBuilder-Abfrage, Befehlsabfrage und Original-SQL-Abfrage

Bei der Webentwicklung ist die Seitenpräsentation von entscheidender Bedeutung. Bei der Entwicklung einer dynamischen Website kann es für PHP-Entwickler leicht passieren, dass sie in einer großen Anzahl von HTML-Tags und PHP-Code stecken bleiben. Sobald der Stil oder das Layout geändert werden muss, muss der Code immer wieder geändert werden, was äußerst kostspielig in der Wartung ist. Um dieses Problem zu lösen, stellen moderne PHP-Frameworks meist eine Template-Engine zur Verfügung. Unter ihnen ist Twig eine der beliebtesten Template-Engines. In diesem Artikel erfahren Sie, wie und warum Sie Twig für PHP verwenden
