MVC, form alanı değerleri hazırlanması, POST veri işleme

5 Cevap php

Ben bir uygulama geliştirmek için CodeIgniter kullanıyorum, ve Ruby on Rails hakkında bit okuma edilmiştir. Özellikle Skinny Controller, Fat Model mükemmel mantıklı görünüyordu. Bu gerçekten beni kontrolör bakmak ve cehennem aslında neler olduğunu bilmek sağlar, ve çok çok hızlı ayarlamalar ve hata düzeltmeleri sağlar.

Ben POST verileri işlemek yerlerde Ancak ben bir engel vardır. Ben Controller değişkenlerin bir demet haline diyoruz ve modele geçmek olduğunu etmeyin. Yoksa sadece modeline doğrudan erişebilirim?

Form alanı değerleri prepopulating düşünmeye zaman Ayrıca ben aynı sorunu yaşıyorum. Ben denetleyici tek bir yöntemini çağırın ve görünümüne geçmesi sonucunu ya da sadece değişken bir demet yapmak ve doğrudan denetleyicisi görünüme onları geçmek gerekir.

Herhangi bir rehberlik büyük takdir.

5 Cevap

Orada bu işlemek için bir kaç yolu vardır, ama genellikle, onu aramak için görünüm için tutarlı kabul edilmez $this->CI->input->post( $item ). Genellikle, görünümü tamamen verilerin görüntülenmesi için sınırlı ve tek fonksiyonu vardır yapmalıdır ararsa iyi olur anchor, lang, vd gibi aramaları. Bu modelleri (olası istisnalar dil ve yapılandırma veri vardır) onlar bilgi geçirilebilir, özellikle dışarıdan veri kapmak zorunda kalmamak için de iyidir. CodeIgniter'daki endişelerini geleneksel ayrımı Model veri depolayan, Görünüm verileri görüntüler ve Denetleyici (bazen bu kütüphaneler verileri işlemek ve Controller kitaplığı işlevlerini çağıran olacak) onu işlemesidir.

Bilgi <?php echo $value; ?> olarak görünümünden görünümü ve daha sonra çıkışa geçti ise ön doldurmamak nettir, ancak some exceptions vardır.

Basically, these are the rules I follow:

  • Model Controller kaydetmek hiçbir girdi alır.
    • Manipülasyon gerekli ise sadece yardımcı fonksiyonları ve kütüphane yöntemlerini çağırır.
    • (: Serileştirme, vs yani) verileri belirli bir şekilde saklanması gerekir eğer sadece veri yönetir.
  • Görünümü Controller kaydetmek hiçbir girdi alır.
    • Dize aramalarında ve hiçbir kütüphane yöntemleri için sadece yardımcı işlevlerini çağırır.
    • Bu yapılandırma veya dil verilerini yukarı bakıyor zaman veri yöneten gereken tek zamandır. Bu tercüme olarak anlaşılmalıdır.

http://teknoid.wordpress.com/2009/01/06/another-way-to-think-about-mvc/

Modeller (bankacılar) tersi görüntüle (müşteri) doğrudan konuşmak ve asla gibi görünüyor. Bu nedenle her zaman orta-adam olarak Denetleyicisi (vezne) kullanın.

Ben "kural" Burada ne olduğundan emin değilim, ama genellikle sadece denetleyici yapılması gerekenleri kontrol sopa. So gönderdi olmuştur ne öğrenmek, ve sonra ne gerekir. Denilen işleve bağlı olarak, modelde daha da işlenen alır POST verileri içeren bir seçme, güncelleme, vb modeli genellikle bir çağrı.

Önceden doldurmamak için, ben her zaman görünümü dışında tüm bu mantık tutmaya çalışın. Yani değişkenler (varsayılan şeyler veya POSTed verisini) görüntülenir ve daha sonra görünüm için bu göndermek hangi kontrol denetleyicisi. Bu şekilde görünüm basit kalır, ve yapmanız gereken tek şey bir değişken görüntüler olduğunu.

Kontrolör tüm veri işleme yapmalıdır.

Lütfen POST verileri kapmak için denetleyicisini kullanın sonra modele geçmek.

Modeli tüm geri denetleyiciye gerçek geçerek Tamam gitti onaylar.

Bu noktada, kontrol başarılı görünümüne göstermek için veri geçer.

CodeIgniter has a wonderful form_validation library that runs in the controller: http://codeigniter.com/user_guide/libraries/form_validation.html#overview

$ _POST Sonra, veri hızla & olmuştur kolayca önceden belirlenmiş kurallar uyarınca, form_validation kütüphanesi tarafından onaylanmış, model ve / veya görünümüne valide veri aktarmak.