tanya logika di YII

Agan agan yang baik,

ane ada tampilan aplikasi seperti ini :


|header___|

|_______________________|

|tree___|periode______|

|tree___|periode______|

|tree___|periode______|

|tree___|output_______|

|tree___|output_______|

|tree___|output_______|

|tree___|output_______|

gimana cara berpikir / analisa untuk membuatnya (seperti model, view dan controllernya).

kira kira bagusnya model nya ada berapa? view nya ada berapa (terpisah / satu saja)? dan controllernya jg ada berapa?

Deskripsinya seperti ini ketika menu tree di klik, tampil halaman input periode disebelahnya tanpa refresh.

Setelah periode dipilih dan submit, maka output ditampilkan berdasarkan periode yang dipilih.

Ane masih baru di YII gan, jadi pengen belajar analisa dari agan agan ku yang baik baik.

Untuk tree dan periode ane dah buat, tapi pas mau menampilkan output(setelah submit periode). Halaman header, tree dan periode semuanya ilang digantikan oleh output.

Makasih ya gan…:)

ane coba deskripsi kembali, lihat pemahaman ane bener gak yah?

jadi disebelah kiri itu ada tree (dan jumlahnya lebih dari satu, jumlah tidak pasti)

Tree ini kalau diklik akan muncul textField yang minta nilai periode

nah setelah input2 bbrp periode, user klik tombol submit (hanya ada satu tombol submit dan di bawah)

setelah submit maunya semuanya tetap ada, ditambah output

bener gak?

ane masih belajar, jadi ini belum tau best practice. [list=1]

[*]Di Controller cukup satu dan action juga satu sudah cukup (tapi mungkin perlu fungsi private supaya dalam satu action gak kepanjangan codingnya)

[*]Di View juga seharusnya satu file sudah cukup, textField yang banyak dilooping di controller, outputnya juga ditampilkan tapi harus dibungkus dengan if (cek apakah nilainya null atau nggak)…

[*]Model tergantung dbnya, harusnya satu juga sudah cukup

[/list]

controller cek apakah memiliki $_POST, kalau tidak ada tampilkan view bersangkutan tanpa passing parameter penting apa2…

pada bagian view awalnya tampilin form dengan textField2 yang ada.

else jika ternyata memiliki $_POST

controller memanggil fungsi untuk memproses data (umumnya fungsi memproses data ada di Model)

Controller dapat nilai, dia kembali memanggil view yang tadi tapi kali ini ikut passing parameter

di View, bagian bawah harus cek, apakah parameter ada di set, kalau ada di set maka di looping buat tampil hasilnya (dalam kasus ini periode)

kira2 begitu pemikiran saya…

wah thanks banget gan untuk share logic thinking nya. bagus sekali.

persepsi yang agan sudah tepat, hanya saja input periode itu hanya sekali ( bukan input2 hehe , gambar nya susah sih ).

Untuk logicnya, kalau view itu satu, apa kah nanti reload semuanya ( tree, periode, dan content ) / refresh ketika action controller dipanggil setelah submit?

Sebetulnya ane dah buat menggunakan 3 Controller untuk tree, tanggal, dan content (untuk render view apa yang ditampilkan saat event dilakukan), tapi permasalahannya library jquery yang diload banyak(berulang2), akibatnya content yang diload agak lama tampilnya. Khawatirnya ini ada masalah dengan 3 Controller yang dibuat sehingga load library jquery berulang2.

How to make it better ya gan? :D

maksud agan 3 controller, dalam satu view ,jadi pakai ajax buat nampilin gitu?

kalau maksud agan load library jquery berulang2 pada saat eksekusi ajax, mungkin gara-gara pakai

render() ?

coba saja renderPartial() mungkin tidak akan diload…

@cocobi : mungkin bisa dijelaskan, kamu mo buat apa dl ? sapa tau kita juga bisa bantu untuk mendesign formnya agar tidak terlalu berat di akses. kalo menebak2 susah juga :)

kalo menggunakan 3 controller seharusnya sih tidak ada masalah, yg bermasalah kalo pas rendernya tidak ada limit jumlah data yg akan di render :) pasti lebih lambat. :)

@YiieRz : oke ane jelaskan lebih detail yah…

aplikasi ane adalah aplikasi reporting, interface nya seperti di atas ( tree, input periode, dan grid laporan/content).

Deskripsinya :

di dalam tree itu terdapat nama laporan yang hendak dipilih user.

Misal :

Kasus 1 : jika user memilih laporan neraca (pada menu tree), maka interface input periode akan muncul ( form input datepicker aja), artinya setelah button submit di klik maka grid laporan berdasarkan periode akan muncul. Ketika user input periode lagi dan submit lagi, maka nilai grid akan berubah sesuai periode yang dipilih user.

Yang ane ingin kan tanpa refresh all page ( tree, input periode, dan grid ). Karena kalau tree mesti ambil dari database.

Kasus 2 : Jika user memilih laporan laba rugi, maka interface grid langsung muncul tanpa perlu input periode (form input periode dissapear / hilang ). Karena query SQL nya sudah berdasarkan periode saat ini.

Gitu kaka, setelah ane coba saranya agan Junxiong, ane implementasikan dengan satu controller, tapi konsekuensi nya jadi reload semuanya.

hmmm… kalau menggunakan 3 cntroller ane coba debung menggunakan firebug, banyak looping library (assets) yang di load. Kemungkinan menurut ane karena tiap Controller punya layout sendiri.

Masih belum nemu cara coding yang ringan buat bikin aplikasi ini … :(

makasih ya gan…yang mau menyumbangkan ide nya.

:D

waduh jawabnya kurang yakin neh, karena gak tau bener tidak yg dimaksud.

maaf sebelumnya kalau tidak sesuai,

kalo menurut saya sih lebih baik main di view saja.

jadi buat viewnya 2 :

  1. main form

  2. generatornya

untuk controllernya tetap 1 saja

model disesuaikan dengan dbnya

cara kerjanya gini :

  • di main form bikin form untuk pemilihan jenis report (pake condisi case / if boleh untuk memetakan jenis action parameter yg akan di lempar ke dalam iframe. menurut ane sih pake methode get aja :) hehehe (nyalain reg globalnya jangan lupa)

  • di dalam iframe set aja default value untuk periode jika memang pilihannya langsung menampilkan grid report. tampilan gridnya mungkin harus di modif sedikit, agar pada saat klik search button dia langsung reload gridnya saja (ajax mode on) … ini bagian yg susah, karena harus set satu2 tergantung jenis reportnya.

ya kira2 gini aja dari gw :) buat masta2 sori kalo salah … tq

:) makasih gan udah share knowledge nya, nambah pengetahuan buat ane, dalam hal analisisnya. :)