Saya hanya ingin beberapa saran mengenai cara MVC melakukan sesuatu. Saya menggunakan codeigniter dan saya bertanya-tanya apakah lebih baik memiliki satu kontroler per halaman untuk sebuah situs web atau memiliki satu controller untuk semua halaman?
Katakanlah saya memiliki situs web sederhana tempat Anda dapat mengunjungi beranda, masuk, membuat akun, dan menghubungi admin.
Apakah lebih baik memiliki pengontrol ini: frontend (indeks), login, akun, kontak ATAU memiliki satu pengontrol yang disebut frontend atau apa pun dengan tindakan seperti login, createAccount, kontak?
Kapan Anda tahu jika lebih baik menggunakan satu pengontrol dalam suatu situasi?
Jawaban:
Lebih baik memiliki controller per unit logika, misalnya AccountController (login, registrasi), PagesController (rumah, kontak), Backend -> PagesController (buat, edit, hapus), UsersController (buat, edit, hapus) dan sebagainya.
sumber
@Rushino Anda memiliki dua 'aplikasi' di sini - front-end (untuk pembaca) dan backend (untuk admin). Untuk setiap grup fungsi, Anda memiliki pengontrol.
Masuk adalah grup seperti itu, yang mencakup pembuatan HTML formulir (bidang, panggilan tampilan), dan penanganan formulir (validasi, sambungkan dengan model). Jadi 'login' adalah pengontrol dengan dua tindakan - generateForm dan handleForm.
Halaman dibagi antara aplikasi ujung depan - yang hanya menampilkan halaman - dan aplikasi backend yang memungkinkan pengeditan, penghapusan, pembuatan, dan mungkin melihatnya dengan cara yang berbeda. Beranda adalah 'hanya halaman lain' setidaknya di ujung depan, jadi pas di dalam pengontrol halaman. Di backend, logikanya mungkin cukup berbeda sehingga dapat dibenarkan memiliki pengontrol yang sama sekali berbeda.
Untuk pengguna - jika pengguna dapat mendaftar sendiri, mereka akan memerlukan pengontrol frontend, tetapi jika tidak, semuanya harus dilakukan dengan pengguna hanya di backend.
Perhatikan bahwa masing-masing fungsi backend mungkin memerlukan generator dan pengendali. Hal-hal ini dapat dipecah menjadi file konfigurasi, meskipun, dengan plugin yang merupakan generator bentuk generik.
Singkatnya, ini terlihat seperti ini:
sumber
Saya pikir Anda harus menggunakan Pengendali per unit bisnis, seperti OrdersController untuk semua operasi yang terkait dengan pesanan dan semacamnya. Saya menyadari bahwa dalam kasus ini, Pengontrol mendapatkan BESAR, tetapi kami masih dapat menggunakan kelas pembantu untuk mendelegasikan hal-hal seperti inisialisasi model dan kelas parsial untuk menyebarkan tindakan dalam file terpisah.
Misalnya saya dapat memiliki OrdersController
Create.cs and OrdersController
file List.cs untuk masing-masing kelas OrdersController dengan set Actions yang sesuai. Membuat segalanya lebih bersih dan tetap membuat operasi pesanan terpusat dalam satu kelas pengontrolHanya 2 sen saya.
sumber
Saya pikir Anda bisa mengambil pendekatan yang berbeda:
Satu pengontrol utama sebagai pintu depan yang mengirimkan permintaan ke pengontrol tertentu. Dengan cara ini Anda bisa menggunakan pengontrol depan ini untuk memeriksa hal-hal umum seperti otentikasi pengguna, analitik google, dan hal-hal umum lainnya yang ingin Anda lakukan dan menjaga struktur MVC murni.
Ini bukan ide saya, tetapi Symfony Framework bekerja dengan cara ini sehingga saya dapat memberi tahu Anda bahwa dari pengalaman saya, ini adalah cara yang sangat bagus dan elegan untuk mengimplementasikan frontend.
sumber