2012-11-02

CI memakai view dari database.

Membuat view di database?!? itu ide yang menarik.. Sebenarnya belum kepikiran membuat hal demikian. Bahkan saat ini saya memikirkan 2 cara!! karena topik ini tidak menunjukkan caranya langsung jadi saya jelaskan secara tulisan. Kalau anda berminat, reply saja tulisan ini nanti saya akan buat.
Semua ini sebenarnya berawal dari pertanyaan seseorang di Facebook.
ka CI bisa g tampilan Viewny dr database jd htmlny dr field .trus Urlny jga dr database.. bkn dr controller .share la
Dari pertanyaan inilah saya membuat konsep dimana konsep pertama tetap memakai view (lho sama aja donk?) dan memproses langsung di hasil database tersebut.

Sebelumnya saya meminta anda membagi-bagi rancangan web anda dahulu menjadi bentuk Heder, footer dan content. Dengan demikian anda dapat mempermudah dalam menentukan viewnya. Bila awalnya anda hanya pake 1 view => tidak disarankan. Pecah jadi banyak.. Kadang banyak tidak bagus, tetapi sesuai pengalaman kita akan mendapat keuntungan.

Sebelumnya, saya ingin memberikan info pada anda bahwa memakai view dari database akan menggemukkan controler!! Jadi harap maklum bila controler anda gemuk.. Sebenarnya gemuk ngak masalah asalkan anda jelas dengan tulisan/script anda sendiri.

KONSEP 1 MEMAKAI VIEW

Konsep ini tetap memakai view, tapi view tersebut lebih pada view yang jadi fondasi seperti header HTML sebelum body yang berisi JS, CSS dan lain-lain. Bila anda menginginkan untuk header (judul atas, menu dan lain-lain) tampil dengan view maka silakan. Untuk mempermudah saya hanya memfokuskan di area content.
Di area content ini kita bisa atur dimana tampilnya  tulisan berada, termasuk judul dan lain-lain (tag). Untuk tempat hadirnya kita menuliskan %judul%, %tulisan% dan %tag%. Sehingga kita dapatkan

%JUDUL%

%TULISAN%
%TAG%
Ketika muncul nantinya akan terlihat layaknya konten. Judul besar dan tebal, tulisan normal, dan tag kecil. Cara membuatnya.. kita tulis di table formatnya. Lalu kita panggil dari view.. 

$a[view]=$this->my_model->callView('tulisanku');

isi dari callView cuma query pemanggilan jadi ngak kutulis disini. Lalu kamu kirim ke view, kemudian di parse dan terakhir di echo

$tmp=$this->load->view('contoh',$a, TRUE);
$tmp=$this->my_model->parse($tmp,$aParse);
echo $tmp;

isi view sebenarnya hanya

echo $view;

tapi perintah
$this->load->view('contoh',$a, TRUE);

adalah perintah mengembalikan nilai yang ada di view .. jadi kita akan mendapatkan $tmp. Berikutnya kita akan parse (ubah nilai yang ada di tmp) dalam kasus ini kita akan ubah %judul% dan lain-lain sesuai keperluan. Sebenarnya $aParse ini berisi array seperti

  • judul
  • tulisan
  • tag
tapi untuk mempersingkat saya tidak membuat fungsi memanggil parsenya (saya asumsikan anda memasukkan manual). Di fungsi parse kita akan ubah.. saya biasa memakai
str_replace()
tetapi ada cara yang lebih bagus.. tetapi cara yang saya pakai itu untuk pemula, bila ada bisa / tau cara yang lebih mantap.. tidak dilarang
setelah itu silakan anda echo saja atau gunakan sesuai keperluan.



KONSEP 2 MEMAKAI PARSE

mirip cara pertama tetapi berbeda caranya. saya memanggil isi view 

$a[view]=$this->my_model->callView('tulisanku');
Tetapi berikutnya saya akan langsung parse.


Tentu anda bertanya kenapa tidak langsung kasi konsep 2.. disini saya menunjukkan pemakaian view yang lain, dimana view yang kita gunakan kadang tidak mengembalikan hasil tapi langsung menampilkan.

cara pertama dipakai bila anda sudah punya kerangka pasti tapi boleh ada perubahan dibagian yang anda tentukan seperti areal content. Cara pertama sebenarnya lebih condong kepada metode wordpress tetapi versi yang lama. 
Cara kedua bisa dibilang agak advance, bahkan anda hanya perlu view untuk dasarnya saja (kerangka kepala) tapi badannya (dibawah <body>) tidak termasuk. Kedepannya anda bisa memanfaatkan dengan memanggil content berbeda. Tapi ingat, cara 2 lebih baik untuk yang advance.

Mengenai pemakaian persen bukan dollar.. itu masalah kebiasaan saja. Kalau anda merasa enak pakai persen, silakan. Tetapi ingat jangan sampai ada tabrakan.. Bisa-bisa isinya double!

Tidak ada komentar: