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.
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 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
echo CHtml::textField($name,'value'); foreach($models as $model):
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
$this->widget('CCaptcha', array( 'captchaAction'=>'captcha', 'showRefreshButton'=>false));
Catatan: Nilai
showRefreshButton
ditetapkan sebagai{false}
daripada"false"
karena "false" berarti string daripada boolean.
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
if($this->cache('profile', array('duration'=>3600))): // informasi profil pengguna di sini $this->endCache(); endif;
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
$this->beginClip('clipID'); // konten untuk klip ini $this->endClip();
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
--->
Signup or Login in order to comment.