Pertanyaan Bagaimana cara melewatkan nilai dari pengontrol untuk melihat di PHP tanpa kerangka kerja? [Tutup]


Saya baru di PHP dan telah membaca tentang MVC. Saat ini, saya tidak menggunakan kerangka kerja apa pun dan ingin tahu bagaimana saya bisa mendorong data dari pengontrol ke tampilan.

Latar Belakang:

  1. htmlForm1.php -> Dapatkan input dan berikan data ke DoWork.php untuk diproses
  2. DoWork.php -> Kerjakan dan teruskan ke htmlForm2.php untuk ditampilkan
  3. htmlForm2.php -> Tampilkan hasil

Saya mengerti bahwa saya memperoleh nilai (dari htmlForm1.php) di DoWork.php melalui _GET. Pertanyaan saya adalah bagaimana cara mendapatkan nilai (dari DoWork.php) di htmlForm2.php?

Saya telah berpikir untuk menggunakan sesi, tetapi apakah ini satu-satunya solusi? Saya tidak memerlukan data ini untuk tetap ada setelah htmlForm2.php


5
2018-01-26 03:37


asal


Jawaban:


Itu hanya informasi, itu pengontrol harus mendorong ke melihat Misalnya, akan menjadi input pengguna (dan itu pun hanya dalam kasus yang jarang).

Sebaliknya, dilihat harus meminta informasi dari lapisan model melalui layanan. Itu pengontrol sebagian besar bertanggung jawab untuk mengubah keadaan lapisan mode, berdasarkan masukan pengguna. Itu juga harus dilakukan melalui layanan.

Untuk mencapai ini pengontrol dan tampilan harus memiliki akses ke lapisan model yang sama. Ini biasanya dilakukan dengan menyuntikkan semacam ServiceFactory di kedua contoh. Pabrik kemudian memastikan bahwa setiap layanan hanya sekali, tanpa membuat kode bergantung pada negara global.

P.S .: Tampilannya bukan template bodoh. Mereka adalah kelas yang bertanggung jawab untuk logika UI dalam aplikasi. Mereka adalah apa yang menciptakan tanggapan untuk pengguna, ketika MVC digunakan dalam konteks Web. 

P.P.S .: Model bukan kelas atau objek. Ini adalah salah satu dari dua lapisan dalam MVC. Lapisan lainnya adalah lapisan presentasi, di mana pengontrol, pandangan dan tempaltenya. Lapisan model sebagian besar terdiri dari tiga kelompok besar, masing-masing bertanggung jawab untuk satu aspek tertentu dari lapisan: logika aplikasi, domain / logika bisnis dan logika penyimpanan. 


2
2018-01-26 11:01



Secara teknis pandangan bisa meminta data model secara langsung.

MVC

Garis putus-putus yang menghubungkan model ke tampilan adalah koneksi yang tepat.

Tetapi web MVC berorientasi berbeda dari pendekatan MVC umum karena itu per permintaan eksekusi. Ketika berbicara tentang MVC di luar web, tampilan memiliki banyak fitur lain daripada hanya mengambil data dan mencetaknya: tampilan dapat terhubung langsung ke model, meminta data setelah dimuat, dan juga memicu tindakan di pengontrol (pada acara spesifik dalam tampilan). Hal-hal yang hampir tidak mungkin dicapai hanya dengan HTML (Javascript dapat dimatikan karena itu tidak dapat digunakan) tanpa benar-benar memuat permintaan baru yang lengkap dan mendapatkan respons baru yang lengkap. Bagian HTML dari suatu aplikasi, pada saat ini, terjebak menjadi template bodoh karena dirancang untuk menjadi output statis dari permintaan tersebut.

Sebagian besar kerangka kerja web PHP memperlakukan tampilan sebagai templat, dan saya rasa (IMHO) itulah pendekatan terbaik dan lebih jelas untuk konteks ini. Dengan cara itu jika Anda mengirim tampilan sebagai respons, Anda dapat mengirim variabel ke tampilan dari pengontrol dengan sederhana:

$view = new View('view/myView.php');
$view->assign('a' => 'b');

dan kemudian di dalam kelas tampilan saja extract() variabel dalam larik var yang ditetapkan sebelum menyertakan file tampilan aktual.


5
2018-01-26 04:42



Pilihan Anda mendidih ke sesi, http (posting / dapatkan) atau Database.

Paling sering formulir Anda akan mengirimkan datanya ke pengontrol, pengontrol akan menjalankan data melalui modelnya, mungkin mengakhirinya itu disimpan ke dalam tabel (s).

Kemudian pada halaman berikutnya, Anda akan memanggil data dari model Anda berdasarkan sesuatu seperti user_id, disimpan dalam sesi / cookie.


0
2018-01-26 03:51