0 follower

Menggunakan Sintaks Template Alternatif

Yii mengijinkan pengembang untuk menggunakan sintaks template favorit sendiri (misalnya Prado, Smarty) untuk menulis kontroler atau tampilan widget. Ini dilakukan dengan menulis dan menginstalasi komponen aplikasi viewRenderer. Pembuat tampilan mengintersepsi penyertaan CBaseController::renderFile, sesuai dengan file tampilan dengan sintaks template yang dikustomisasi, dan menampilkan hasil kompilasi.

Info: Direkomendasikan untuk menggunakan sintaks template dikustomisasi hanya saat menulis tampilan yang jarang dipakai ulang. Jika tidak, orang yang menggunakan kembali tampilan akan dipaksa untuk memakai sintaks template dikustomisasi yang sama dalam aplikasinya.

Berikutnya kami perkenalkan bagaimana menggunakan CPradoViewRenderer, pembuat tampilan yang mengijinkan para pengembang untuk memakai sintaks template mirip dengan Prado framework. Bagi orang yang ingin mengembangkan pembuat tampilan sendiri, CPradoViewRenderer adalah referensi yang baik.

1. Menggunakan CPradoViewRenderer

Untuk menggunakan CPradoViewRenderer, kita cukup mengkonfigurasi aplikasi seperti berikut:

return array(
    'components'=>array(
        ......,
        'viewRenderer'=>array(
            'class'=>'CPradoViewRenderer',
        ),
    ),
);

Distandarkan, CPradoViewRenderer akan mengkompilasi file sumber tampilan dan menyimpan file hasil PHP di bawah direktori runtime. Hanya saat file sumber tampilan diubah, file PHP akan dibuat ulang. Oleh karenanya, menggunakan CPradoViewRenderer hanya menyebabkan sedikit degradasi performansi.

Tip: Karena CPradoViewRenderer memperkenalkan beberapa tag template baru agar penulisan tampilan lebih mudah dan lebih cepat, Anda masih bisa menulis kode PHP seperti biasa dalam sumber tampilan.

Berikutnya kami perkenalkan tag template yang didukung oleh CPradoViewRenderer.

Tag PHP Pendek

Tag PHP pendek adalah jalan pintas untuk menulis ekspresi dan pernyataan PHP dalam sebuah tampilan. Tag ekspresi <%= expression %> diterjemahkan ke dalam <?php echo expression ?>; sementara tag pernyataan <% statement %> menjadi <?php statement ?>. Sebagai contoh,

<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>

diubah menjadi

<?php echo CHtml::textField($name,'value'); ?>
<?php foreach($models as $model): ?>

Tag Komponen

Tag komponen dipakai untuk menyisipkan widget dalam tampilan. Ia menggunakan sintaks berikut:

<com:WidgetClass property1=value1 property2=value2 ...>
    // konten untuk widget
</com:WidgetClass>
 
// widget tanpa konten
<com:WidgetClass property1=value1 property2=value2 .../>

di mana WidgetClass menetapkan nama kelas widget atau kelas alias path, dan nilai awal properti bisa berupa string bertanda kutip atau ekspresi PHP berkurung di dalam pasangan kurung kurawal. Sebagai contoh,

<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />

akan diubah menjadi

<?php $this->widget('CCaptcha', array(
    'captchaAction'=>'captcha',
    'showRefreshButton'=>false)); ?>

Catatan: Nilai showRefreshButton ditetapkan sebagai {false} daripada "false" karena "false" berarti string daripada boolean.

Tag Cache

Tag cache adalah jalan pintas menggunakan cache fragmen. Sintaksnya seperti berikut,

<cache:fragmentID property1=value1 property2=value2 ...>
    // content being cached
</cache:fragmentID >

di mana fragmentID harus berupa pembeda yang secara unik mengidentifikasi konten yang sedang di-cache, dan pasangan properti-nilai dipakai untuk mengkonfigurasi cache fragmen. Sebagai contoh,

<cache:profile duration={3600}>
    // informasi profil pengguna di sini
</cache:profile >

akan diubah menjadi

<?php if($this->cache('profile', array('duration'=>3600))): ?>
    // informasi profil pengguna di sini
<?php $this->endCache(); endif; ?>

Tag clip

Seperti tag cache, tag clip adalah jalan pintas untuk memanggil CBaseController::beginClip dan CBaseController::endClip dalam tampilan. Sintaksnya adalah sebagai berikut,

<clip:clipID>
    // konten untuk klip ini
</clip:clipID >

di mana clipID adalah pembeda yang secara unik mengidentifikasi konten klik. Tag clip akan diubah menjadi

<?php $this->beginClip('clipID'); ?>
    // konten untuk klip ini
<?php $this->endClip(); ?>

Tag Komentar

Tag komentar dipakai untuk menulis komentar tampilan yang hanya terlihat bagi pengembang. Tag komentar akan dihilangkan saat tampilan diperlihatkan ke pengguna akhir. Sintaks untuk tag komentar adalah sebagai berkut,

<!---
komentar tampilan yang akan dibuang
--->