Web 開発のプロセスにおいて、テンプレート エンジンを使用すると、フロントエンド開発の作業負荷が大幅に軽減され、Web アプリケーションの保守性も向上します。 Twig は、シンプルで読みやすく、拡張性の高い人気のある PHP テンプレート エンジンです。この記事では、Silex フレームワークで Twig テンプレート エンジンを使用する方法を紹介します。
まず、Composer を使用して Twig をインストールする必要があります。プロジェクト ディレクトリに入り、次のコマンドを実行します:
composer require twig/twig
インストールが完了したら、Silex に Twig サービス プロバイダーを登録する必要があります:
// index.php require_once __DIR__.'/vendor/autoload.php'; $app = new SilexApplication(); // 注册Twig服务提供器 $app->register(new SilexProviderTwigServiceProvider(), array( 'twig.path' => __DIR__.'/views', ));
上記のコードでは、## を使用します。 #registerTwig サービス プロバイダーを Silex アプリケーションに登録し、Twig テンプレート ファイルが保存されているディレクトリを指定するメソッド。
<!-- views/hello.html.twig --> <!DOCTYPE html> <html> <head> <title>Hello Twig</title> </head> <body> <h1>Hello {{ name }}!</h1> </body> </html>上記のコードのように、Twig が提供する
{{}} 構文を使用して変数を挿入できます。 #{{ name }}
は、name
変数の値をテンプレート内の位置にレンダリングすることを意味します。 次に、上記のテンプレート ファイルをレンダリングするルートを Silex で作成します。具体的なコードは次のとおりです。
// index.php require_once __DIR__.'/vendor/autoload.php'; $app = new SilexApplication(); $app->register(new SilexProviderTwigServiceProvider(), array( 'twig.path' => __DIR__.'/views', )); // 定义路由 $app->get('/hello/{name}', function ($name) use ($app) { return $app['twig']->render('hello.html.twig', array( 'name' => $name, )); }); $app->run();
上記のコードでは、
$app['twig'] を使用して Twig インスタンスを取得し、render
を使用します。メソッドを使用してテンプレート ファイルをレンダリングし、同時にテンプレート内の name
変数の値を渡します。 http://localhost:8000/hello/world にアクセスすると、次のような出力が表示されます。
<!DOCTYPE html> <html> <head> <title>Hello Twig</title> </head> <body> <h1>Hello world!</h1> </body> </html>
ネストされたテンプレート
および footer.html.twig
として保存し、それらを他のテンプレートにネストできます。 ブログ投稿を表示するためのテンプレート ファイルを作成しましょう:
<!-- views/post.html.twig --> {% extends 'layout.html.twig' %} {% block content %} <h1>{{ title }}</h1> <div>{{ content }}</div> <p>Author: {{ author }}</p> {% endblock %}
このテンプレートでは、
{% extends 'layout.html.twig' %} を使用します。別のテンプレートを継承するとは、テンプレート内のコンテンツがlayout.html.twig の
content という名前のブロックに挿入されることを意味します。
次に、ブログ投稿のレイアウトを定義する
layout.html.twig
<!-- views/layout.html.twig --> <!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> <header> <h1>My Blog</h1> </header> <main> {% block content %}{% endblock %} </main> <footer> © 2021 Me </footer> </body> </html>
上記のコードでは、## という名前のファイルを定義します。 #title
ブロックは、Twig が提供する {% block %} コマンドを使用します。 POST を送信すると、ここのコンテンツが
post に置き換えられるため、呼び出しの焦点は
{% block content %}{% endblock %}
4a249f0d628e2318394fd9b75b4636b1{{ title }}473f0a7621bec819994bb5020d29372adc6dce4a544fdca2df29d5ac0ea9906b{{ content }}16b28748ea4df4d9c2150843fecfba68e388a4556c0f65e1904146cc1a846bee著者: {{ author }} p>。
最後に、レンダリング用の新しいルートを作成します
post.html.twig テンプレート:
$app->get('/post/{id}', function ($id) use ($app) { $post = array( 'title' => 'Post ' . $id, 'content' => 'This is the content of post ' . $id, 'author' => 'Me', ); return $app['twig']->render('post.html.twig', $post); });上記のコードでは、## Array of という名前の新しいルートを作成します。 #$post
: 記事のタイトル、内容、著者、その他の情報が含まれます。次に、Twig の render
メソッドを使用して
テンプレートをレンダリングし、同時に $post
配列をテンプレートに渡します。 最終的には、次のような出力が表示されます。
<pre class='brush:html;toolbar:false;'><!DOCTYPE html>
<html>
<head>
<title>Post 1</title>
</head>
<body>
<header>
<h1>My Blog</h1>
</header>
<main>
<h1>Post 1</h1>
<div>This is the content of post 1</div>
<p>Author: Me</p>
</main>
<footer>
&copy; 2021 Me
</footer>
</body>
</html></pre>
概要この記事の導入を通じて、Twig テンプレート エンジンをサイレックスフレームワーク。 Twig を使用すると、コードの保守性を向上させながら、Web 開発作業をより効率的かつ便利にすることができます。 Twig についてさらに詳しく知りたい場合は、公式ドキュメント https://twig.symfony.com/doc をチェックしてください。
以上がSilex フレームワークでテンプレート エンジン Twig を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。