ホームページ バックエンド開発 PHPチュートリアル Yii フレームワークでの PHP テンプレート エンジン Twig の使用例_PHP チュートリアル

Yii フレームワークでの PHP テンプレート エンジン Twig の使用例_PHP チュートリアル

Jul 13, 2016 am 10:28 AM
twig yii

Twig は、高速、安全、柔軟な PHP テンプレート エンジンです。多くの組み込みフィルターとタグがあり、テンプレートの継承をサポートしているため、最も簡潔なコードを使用してテンプレートを記述することができます。その構文は、Python のテンプレート エンジン Jinjia および Django のテンプレート構文に非常に似ています。 たとえば、PHP で変数を出力してエスケープする必要がある場合、構文は複雑になります:

コードをコピーします コードは次のとおりです:


< ;?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

しかし、Twig では次のように書くことができます:
コードをコピー コードは次のとおりです:

{{ var }}
{{ var|エスケープ }}
{{ var|e }} {# 変数をエスケープするショートカット #}

配列を走査します:
コードをコピーします コードは次のとおりです:

{% for user in users %}
* { { user.name }}
{% else %}
ユーザーが見つかりませんでした。
{% endfor %}

ただし、Twig を Yii Framework に統合するときに問題が発生することがあります。公式 Web サイトにはすでに Twig を統合するためのソリューションが記載されているため、ここでは詳しく説明しません。ただし、Twig は PHP 構文をサポートしていないため、一部の式で問題が発生します。たとえば、Form のビューを記述する場合、次のように記述することがよくあります:

コードをコピーします コードは次のとおりです。 :

beginWidget('CActiveForm'); ?>
ログイン


  • label($model,'password'); ?>

    passwordField($model,'password'); ?>


error($model,'password'); ?>

endWidget() ?>

;このような構文は twig では表現できないため、カスタマイズされたウィジェット タグをサポートし、必要なコードに自動的に解析できるように Twig の機能を拡張したいと考えています。 TokenParser と Node の合計 2 つのクラスが必要です。 コードはそのすぐ下にあります:



コードをコピーします コードは次のとおりです:

/*
* このファイルは Twig の拡張子です
*
* (c) 2010 lfyzjck
*/

/**
* Yii フレームワークのパーサーウィジェットタグ
*
* {% beginwidget 'CActiveForm' as form %}
* フォームの内容
* {% endwidget %}
*
 */
class Yii_WidgetBlock_TokenParser extends Twig_TokenParser
{
/**
* トークンを解析し、ノードを返します。
*
* @param Twig_Token $token Twig_Token インスタンス
*
* @return Twig_NodeInterface Twig_NodeInterface インスタンス
    */
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, > getTag());
}

/**
* このトークンパーサーに関連付けられたタグ名を取得します。
*
* @param string タグ名
    */
パブリック関数 getTag()
{
return 'beginwidget';
}

public function DecideBlockEnd(Twig_Token $token)
{
return $token->test('endwidget');
}
}

class Yii_Node_WidgetBlock は Twig_Node を拡張します
{
public function __construct($attrs, Twig_NodeInterface $body, Twig_Node_Expression_Array $args = NULL, $lineno, $tag)
{
$attrs = array_merge(array('value' =&g偽)、 $attrs);
$nodes = array('args' => $args, 'body' => $body);
親::__construct($nodes, $attrs, $lineno,$tag);
}

public functioncompile(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);

その後、それを小枝テンプレート これは書かれています:
コードをコピーします コードは次のとおりです:

{% beginwidget 'CActiveForm' as form %}


  • {{ form.label (モデル, 'ユーザー名' ) }}
    {{ form.textField(モデル, 'ユーザー名') }}


  • {{ form.label(model, 'パスワード') }}
    {{ form.passwordField (model, 'password') }}


{% endwidget %}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/802218.html技術記事 Twig は、高速、安全、柔軟な PHP テンプレート エンジンであり、多くの組み込みフィルターとタグがあり、テンプレートの継承をサポートしているため、最も簡潔なコードを使用してテンプレートを記述することができます。彼の言語...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP で Twig を使用するにはどうすればよいですか? CakePHP で Twig を使用するにはどうすればよいですか? Jun 05, 2023 pm 07:51 PM

CakePHP で Twig を使用すると、テンプレートとビューを分離し、コードをよりモジュール化して保守しやすくすることができます。この記事では、CakePHP で Twig を使用する方法を紹介します。 1. Twig をインストールします。まずプロジェクトに Twig ライブラリをインストールします。このタスクは Composer を使用して完了できます。コンソールで次のコマンドを実行します:composerrequire "twig/twig:^2.0" このコマンドはプロジェクトのベンダーに表示されます。

Web 開発のために PHP で Twig テンプレート エンジンを使用する方法 Web 開発のために PHP で Twig テンプレート エンジンを使用する方法 Jun 25, 2023 pm 04:03 PM

Web 開発テクノロジーの継続的な発展に伴い、Web アプリケーションを開発するためのより柔軟で効率的なテンプレート エンジンを求める開発者が増えています。中でもTwigは非常に優秀で人気のあるPHPテンプレートエンジンで、Symfonyフレームワークをベースに開発されており、無制限の拡張をサポートしており、複雑なWebアプリケーションの構築に非常に適しています。この記事では、PHP での Web 開発に Twig テンプレート エンジンを使用する方法を紹介します。 1. Twig テンプレート エンジンの紹介 Twig は FabienPoten によって開発されました。

PHP8.0のテンプレートライブラリ: Twig PHP8.0のテンプレートライブラリ: Twig May 14, 2023 am 08:40 AM

PHP8.0のテンプレートライブラリ: TwigTwigは、現在PHP Webアプリケーションで広く使用されているテンプレートライブラリであり、高い可読性、使いやすさ、強力な拡張性の特徴を持っています。 Twig はシンプルで理解しやすい構文を使用しており、Web 開発者が HTML、XML、JSON、その他のテキスト形式を明確かつ整然とした方法で整理して出力するのに役立ちます。この記事では、Twig の基本的な構文と機能、および PHP8.0 での Twig の使用方法を紹介します。 Twig の基本的な構文は P と似ています。

Twig と Timber の画像、メニュー、ユーザーを使用して WordPress 開発をすぐに開始できます Twig と Timber の画像、メニュー、ユーザーを使用して WordPress 開発をすぐに開始できます Sep 04, 2023 pm 03:37 PM

ここまでで、モジュール式 WordPress テーマを構築しながら Timber で Twig を使用する基本概念を学習しました。また、DRY 原則に基づいた Twig を使用したブロックのネストと多重継承についても研究しました。今日は、Twig と Timber プラグインを使用して、テーマ内の添付画像、WordPress メニュー、およびユーザーを表示する方法を検討します。木の画像 画像は WordPress テーマの重要な要素の 1 つです。通常の WordPress コーディングの実践では、画像は通常の HTML 画像タグ内で PHP と統合されます。ただし、Timber は、モジュール式でクリーンな img (イメージ) タグを処理するためのかなり包括的なアプローチを提供します。

PHP フレームワーク Yii を使用して可用性の高いクラウド バックアップ システムを開発する方法 PHP フレームワーク Yii を使用して可用性の高いクラウド バックアップ システムを開発する方法 Jun 27, 2023 am 09:04 AM

クラウド コンピューティング テクノロジの継続的な発展により、データのバックアップはすべての企業が行う必要のあるものになりました。この文脈では、可用性の高いクラウド バックアップ システムを開発することが特に重要です。 PHP フレームワーク Yii は、開発者が高性能の Web アプリケーションを迅速に構築できる強力なフレームワークです。ここでは、Yii フレームワークを使用して可用性の高いクラウド バックアップ システムを開発する方法を紹介します。データベースモデルの設計 Yii フレームワークでは、データベースモデルは非常に重要な部分です。データ バックアップ システムには多くのテーブルとリレーションシップが必要なため、

Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Symfony と Yii2: 大規模な Web アプリケーションの開発にはどちらのフレームワークが適していますか? Jun 19, 2023 am 10:57 AM

Web アプリケーションの需要が高まるにつれ、開発者が開発フレームワークを選択する選択肢はますます増えています。 PHP フレームワークとして人気のある Symfony と Yii2 は、どちらも強力な機能とパフォーマンスを備えていますが、大規模な Web アプリケーションを開発する必要がある場合、どちらのフレームワークがより適しているのでしょうか。次に、より良い選択を行うために、Symphony と Yii2 の比較分析を行います。基本概要 Symphony は、PHP で書かれたオープンソースの Web アプリケーション フレームワークであり、上に構築されています。

Yii フレームワークでのデータクエリ: データに効率的にアクセスする Yii フレームワークでのデータクエリ: データに効率的にアクセスする Jun 21, 2023 am 11:22 AM

Yii フレームワークは、Web アプリケーション開発のプロセスを簡素化するための多数のツールとコンポーネントを提供するオープンソースの PHP Web アプリケーション フレームワークであり、その重要なコンポーネントの 1 つがデータ クエリです。 Yii フレームワークでは、SQL に似た構文を使用してデータベースにアクセスし、データを効率的にクエリおよび操作できます。 Yii フレームワークのクエリビルダーには主に次の種類があります: ActiveRecord クエリ、QueryBuilder クエリ、コマンド クエリ、独自の SQL クエリ

PHP での高度なスキニング: Twig の使用方法 PHP での高度なスキニング: Twig の使用方法 Jun 19, 2023 pm 04:03 PM

Web 開発では、ページのプレゼンテーションが非常に重要です。 PHP 開発者にとって、動的な Web サイトを開発する場合、多数の HTML タグと PHP コードに行き詰まりがちです。スタイルやレイアウトを変更する必要があると、コードを何度も変更する必要があり、維持に非常にコストがかかります。この問題を解決するために、最新の PHP フレームワークは通常、テンプレート エンジンを提供します。その中でも、Twig は最も人気のあるテンプレート エンジンの 1 つです。この記事では、PHP に Twig を使用する方法とその理由について説明します。

See all articles