Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan enjin templat Twig dengan rangka kerja Silex?

Bagaimana untuk menggunakan enjin templat Twig dengan rangka kerja Silex?

PHPz
PHPzasal
2023-06-03 09:21:46715semak imbas

Dalam proses pembangunan web, menggunakan enjin templat boleh mengurangkan beban kerja pembangunan bahagian hadapan dan juga meningkatkan kebolehselenggaraan aplikasi web. Twig ialah enjin templat PHP popular yang ringkas, mudah dibaca dan sangat berskala. Artikel ini akan memperkenalkan cara menggunakan enjin templat Twig dalam rangka kerja Silex.

Pasang Twig

Mula-mula, kita perlu memasang Twig menggunakan Composer. Masukkan direktori projek dan laksanakan arahan berikut:

composer require twig/twig

Selepas pemasangan selesai, kami perlu mendaftarkan penyedia perkhidmatan Twig dalam Silex:

// index.php
require_once __DIR__.'/vendor/autoload.php';

$app = new SilexApplication();

// 注册Twig服务提供器
$app->register(new SilexProviderTwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

Dalam kod di atas, kami menggunakan register kaedah untuk memindahkan Twig kepada Pembekal perkhidmatan didaftarkan kepada aplikasi Silex dan menentukan direktori tempat fail templat Twig disimpan.

Penggunaan asas

Terdapat dua konsep yang sangat penting dalam Twig: templat dan pembolehubah. Templat ialah fail yang menerangkan cara untuk memaparkan data dan pembolehubah ialah data yang ingin kami gunakan dalam templat.

Mari buat fail templat mudah:

<!-- views/hello.html.twig -->

<!DOCTYPE html>
<html>
<head>
    <title>Hello Twig</title>
</head>
<body>
    <h1>Hello {{ name }}!</h1>
</body>
</html>

Kita boleh menggunakan sintaks {{}} yang disediakan oleh Twig untuk memasukkan pembolehubah, seperti {{ name }} dalam kod di atas, yang bermaksud bahawa nameNilai pembolehubah diberikan kepada kedudukan dalam templat.

Seterusnya, kami mencipta laluan dalam Silex yang akan memaparkan fail templat di atas. Kod khusus adalah seperti berikut:

// 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();

Dalam kod di atas, kami menggunakan $app['twig'] untuk mendapatkan contoh Twig, dan menggunakan kaedah render untuk memaparkan fail templat, sambil menghantar nilai name berubah kepada templat.

Melawati http://localhost:8000/hello/world akan mendapat output yang serupa dengan yang berikut:

<!DOCTYPE html>
<html>
<head>
    <title>Hello Twig</title>
</head>
<body>
    <h1>Hello world!</h1>
</body>
</html>

Templat bersarang

Twig juga menyokong penggabungan berbilang templat dalam Rendered bersama-sama , ini menjadikannya sangat mudah untuk memisahkan struktur dan kandungan templat. Contohnya, kita boleh mengasingkan bahagian kepala dan bahagian bawah tapak web, menyimpannya sebagai header.html.twig dan footer.html.twig masing-masing, kemudian menyarangkannya dalam templat lain.

Mari kita buat fail templat untuk memaparkan catatan blog:

<!-- views/post.html.twig -->

{% extends 'layout.html.twig' %}

{% block content %}
    <h1>{{ title }}</h1>
    <div>{{ content }}</div>
    <p>Author: {{ author }}</p>
{% endblock %}

Dalam templat ini, kami menggunakan arahan {% extends 'layout.html.twig' %} untuk mewarisi templat lain, menunjukkan bahawa templat Kandungan akan dimasukkan ke dalam blok bernama layout.html.twig dalam content.

Seterusnya kami menulis templat layout.html.twig untuk menentukan susun atur catatan blog:

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

Dalam kod di atas, kami menentukan blok bernama title, yang disediakan oleh Twig The {% block %} arahan.

Fokus panggilan kami adalah di {% block content %}{% endblock %}, kerana apabila menghantar POST, kandungan di sini akan digantikan dengan post.html.twig dalam 4a249f0d628e2318394fd9b75b4636b1{{ title }}473f0a7621bec819994bb5020d29372adc6dce4a544fdca2df29d5ac0ea9906b{{ content }}16b28748ea4df4d9c2150843fecfba68e388a4556c0f65e1904146cc1a846beeAuthor: {{ author }}94b3e26ee717c64999d7867364b1b4a3.

Akhir sekali, kami mencipta laluan baharu untuk memaparkan templat 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);
});

Dalam kod di atas, kami mencipta tatasusunan bernama $post, yang mengandungi Maklumat seperti tajuk, kandungan dan pengarang. Kemudian, gunakan kaedah render Twig untuk memaparkan templat post.html.twig sambil menghantar tatasusunan $post ke templat.

Akhirnya, kita akan melihat output yang serupa dengan yang berikut:

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

Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan enjin templat Twig dalam Rangka kerja Silex. Menggunakan Twig boleh menjadikan pembangunan web kami berfungsi dengan lebih cekap dan mudah, sambil meningkatkan kebolehselenggaraan kod. Jika anda ingin mengetahui lebih lanjut tentang Twig, anda boleh menyemak dokumentasi rasmi https://twig.symfony.com/doc.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan enjin templat Twig dengan rangka kerja Silex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn