ホームページ  >  記事  >  バックエンド開発  >  Silex フレームワークでテンプレート エンジン Twig を使用するにはどうすればよいですか?

Silex フレームワークでテンプレート エンジン Twig を使用するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-06-03 09:21:46719ブラウズ

Web 開発のプロセスにおいて、テンプレート エンジンを使用すると、フロントエンド開発の作業負荷が大幅に軽減され、Web アプリケーションの保守性も向上します。 Twig は、シンプルで読みやすく、拡張性の高い人気のある PHP テンプレート エンジンです。この記事では、Silex フレームワークで Twig テンプレート エンジンを使用する方法を紹介します。

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 テンプレート ファイルが保存されているディレクトリを指定するメソッド。

基本的な使い方

Twig には、テンプレートと変数という 2 つの非常に重要な概念があります。テンプレートはデータのレンダリング方法を記述したファイルであり、変数はテンプレートで使用するデータです。

シンプルなテンプレート ファイルを作成しましょう:

<!-- 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>

ネストされたテンプレート

Twig は、複数のテンプレートの組み合わせもサポートしています。一緒にレンダリングすると、テンプレートの構造とコンテンツを分離するのが非常に便利になります。たとえば、Web サイトの先頭と下部を分離し、それぞれ

header.html.twig

および 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.twigcontent という名前のブロックに挿入されることを意味します。 次に、ブログ投稿のレイアウトを定義する 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>
        &copy; 2021 Me
    </footer>
</body>
</html>
上記のコードでは、## という名前のファイルを定義します。 #title ブロックは、Twig が提供する

{% block %}

コマンドを使用します。 POST を送信すると、ここのコンテンツが post に置き換えられるため、呼び出しの焦点は {% block content %}{% endblock %}

です。 # html.twig

4a249f0d628e2318394fd9b75b4636b1{{ title }}473f0a7621bec819994bb5020d29372adc6dce4a544fdca2df29d5ac0ea9906b{{ content }}16b28748ea4df4d9c2150843fecfba68e388a4556c0f65e1904146cc1a846bee著者: {{ author }} 最後に、レンダリング用の新しいルートを作成します 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.html.twig

テンプレートをレンダリングし、同時に $post 配列をテンプレートに渡します。 最終的には、次のような出力が表示されます。 <pre class='brush:html;toolbar:false;'>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Post 1&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;header&gt; &lt;h1&gt;My Blog&lt;/h1&gt; &lt;/header&gt; &lt;main&gt; &lt;h1&gt;Post 1&lt;/h1&gt; &lt;div&gt;This is the content of post 1&lt;/div&gt; &lt;p&gt;Author: Me&lt;/p&gt; &lt;/main&gt; &lt;footer&gt; &amp;copy; 2021 Me &lt;/footer&gt; &lt;/body&gt; &lt;/html&gt;</pre>概要この記事の導入を通じて、Twig テンプレート エンジンをサイレックスフレームワーク。 Twig を使用すると、コードの保守性を向上させながら、Web 開発作業をより効率的かつ便利にすることができます。 Twig についてさらに詳しく知りたい場合は、公式ドキュメント https://twig.symfony.com/doc をチェックしてください。

以上がSilex フレームワークでテンプレート エンジン Twig を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。