Tags

, , , ,

Template engine termasuk materi yang jarang dibahas di Yii2. Saya sendiri juga belum menemukan alasan yang bagus kenapa harus menggunakan template engine. Yang jelas kalau menggunakan template engine, autocompletionnya IDE tidak jalan, dan itu buruk. Kalau alasannya adalah agar code tampak lebih cantik, saya belum menemukan korelasinya kenapa sintak {{ }} disebut tampak lebih cantik dari <?= ?>

Tanpa template engine

Autocompletion pada file PHP


Yii secara default memang tidak menggunakan template engine. Walau demikian Yii tetap memberikan fasilitas jika memang ada yang mau menggunakannya. Yii tidak membangun sendiri template engine-nya tetapi menggunkan template enggine yang sudah ada yaitu smarty dan twig. Pada tulisan kali ini kita hanya fokus pada twig saja.

Instalasi

Untuk menggunakan twig di Yii2, pertama-tama kita harus menginstallnya lebih dulu menggunakan composer. Dari terminal/cmd, jalankan

$ composer require --prefer-dist yiisoft/yii2-twig

setelah itu ubah configurasi aplikasi

[
    'components' => [
        'view' => [
            'class' => 'yii\web\View',
            'renderers' => [
                'twig' => [
                    'class' => 'yii\twig\ViewRenderer',
                    'cachePath' => '@runtime/Twig/cache',
                    'options' => [
                        'auto_reload' => true,
                    ],
                    'globals' => ['html' => '\yii\helpers\Html'],
                ],
                // ...
            ],
        ],
    ],
]

Setelah itu kita buta layout utama. Kita buat file di folder @app/views/layouts.

Silakan diubah sesuai dengan kebutuhan. Konten dari web page kita nantinya akan diletakkan di tempat {{ content | raw}}.

Membuat CRUD

Berikutnya kita akan coba membuat aplikasi CRUD dari awal menggunakan twig.

Membuat Database Migration

Pertama-tama kita siapkan dulu databasenya. Dalam hal ini kita gunakan migrate agar lebih mudah. Kita buat file migrasi di folder @app/migrations.

Setelah itu kita jalankan dari terminal

$ php yii migrate

Setelah tabelnya terbentuk di database. Berikutnya kita akan membuat ActiveRecord dari tabel tersebut.

Membuat Model

Karena nama tabelnya adalah contact_info maka kita buat class modelnya dengan format CamelCase yaitu ContactInfo.

Di dalam model tersebut sekalian kita terapkan validasinya yaitu yang ada di method rules().

Membuat Controller

Setelah modelnya terbentuk, maka berikutnya adalah membuat class controller.

Di controller tersebut kita buat beberapa action yaitu index, view, create, update dan delete. Di sini controlernya juga menggunakan layout main.twig yang sudah kita buat di atas. Begitu juga file-file yang kita render, kita merender file yang memiliki extensi twig seperti pada actionIndex(), kita merender file index.twig.

Membuat View dengan Twig

Yang terakhir adalah membuat view. View-view yang kita buat kita letakkan di folder @app/views/contact-info. Setiap file yang kita buat juga memiliki extensi twig.

Perhatikan bahwa file create.twig dan file update.twig berbagi sub view yang sama yaitu _form.twig. Dengan demikian kita tidak perlu menulis ulang form yang sama dua kali.

Keseluruhan code di artikel ini bisa dilihat di https://github.com/demoyii/yii2-demo.
Untuk demonya silakan buka http://mdmunir.dev.php.or.id/contact-info

Advertisements