Bagaimana untuk menggunakan enjin templat Twig dengan rangka kerja Silex?

PHPz
Lepaskan: 2023-06-03 09:28:01
asal
714 orang telah melayarinya

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
Salin selepas log masuk

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',
));
Salin selepas log masuk

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>
Salin selepas log masuk

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();
Salin selepas log masuk

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>
Salin selepas log masuk

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 %}
Salin selepas log masuk

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>
Salin selepas log masuk

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 <h1>{{ title }}</h1><div>{{ content }}</div><p>Author: {{ author }}</p>.

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);
});
Salin selepas log masuk

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>
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan