2016-05-05 51 views
6

Şu anki ZF2 projemde, arka planda kaydedilecek nesnelerin yapısını yansıtan, çok sayıda iç içe geçmiş Fieldset s içeren bir Form kompleksim var. Şu anda veriler doğrudan Controller'a gönderilir ve geçerliyse veritabanına kaydedilir.Zend Framework 2'de bir form önizleme sayfası nasıl uygulanır?

Şimdi bir ara adım uygulanmalıdır: Kullanıcı, giriş verilerini veritabanına kaydedilmeden önce kontrol etme şansına sahip olmalıdır. Karar verirse, bunun doğru olması durumunda, form verilerinin sunulması ve veritabanına kaydedilmesi gerekir; Kullanıcı, formun düzenlenmesi gerektiğine karar verirse, forma geri dönüp düzeltmesi gerekir. (Elbette, bir döngü içinde, kullanıcı formdan memnun ve gönderene kadar.)

Bu, bir önizleme sayfasının gerekli olduğu anlamına gelir. Bu sayfa/action verileri almalı ve bir şekilde göstermelidir (bir tablo olarak veya bununla birlikte). Verilerin geçici olarak bir yerde depolanması ve Form nesnesine "hidrate" edilmesi ve kaydedilmesi gerekiyor. Kullanıcı formu güncellemek istiyorsa, form geri yüklenmelidir.

Bu gereksinimi nasıl uygularım?

GÜNCELLEME

Ben bir sunucu tarafı çözüm arıyorum. Önizleme, yeni bir sayfa olmalı ve aynı sayfada (izleme ve diğer amaçlar için) JavScript/istemci tarafı tarafından oluşturulmuş bir HTML olmamalıdır.

+0

Nesneleri seri hale getirip bunları bir oturumda saklayamıyor musunuz? Daha sonra, kullanıcı verilerini kabul ettikten sonra onları veritabanına kaydetmek için nesneleri ayrıştırmayın. – Garry

+0

Hangi nesneyi anlamlandırıyorsun? 'Form'? Ve nerede saklanır - oturumda? – automatix

cevap

0

En iyi çözümün, formun POST isteğini gerçekleştirmeden önce yürütülen bir istemci taraflı (java-) betiğini uygulamak olduğunu söyleyebilirim. Form gönderme etkinliğini yakalayabilir ve tüm form alanlarının (ad ve değer) geçerli durumunu gösterebileceğiniz bir istemci tarafı görünümü oluşturabilirsiniz. Kullanıcı accept'u tıklatırsa, POST işlemine devam edersiniz. Kullanıcı iptal tıklarsa, ek değişikliklere izin verdiğiniz formun görünümüne geri dönersiniz ve her şey kendini tekrar eder.

Bunun nasıl yapılacağına ilişkin örnekler bulmak zor olmamalı ...

bir örneği this blog post olmakla the help of Google ile bulmak için çok fazla var.

+0

Cevabınız için teşekkür ederiz! Eh, teorik olarak işe yarayacak, ancak bu yaklaşımla, JavaScript'te yeniden düzenleyen tüm sunucu tarafı uygulanan doğrulama mantığını çoğaltmam gerekecek. – automatix

+0

Yazdınız: * "Kullanıcı, sunucuya gönderilmeden önce giriş verilerini kontrol etme şansına sahip olmalı, eğer karar verirse, doğru, formun sunulması ve veritabanına kaydedilmesi gerekir" *, ve eklenmeksizin bu mümkün herhangi bir doğrulama: 1) kullanıcı girişini kontrol eder. 2) Kullanıcı her şey yolundaysa, sunucunun işini yapmasına ve onaylamasına izin verebilirsiniz. Ancak, sunucunun kullanıcıdan önce doğrulama yapmasını istiyorsanız, istemcideki doğrulama için benzer kod yazabilirsiniz. Sunucunun tüm girişimlerde çalışmasına izin vermek daha verimli olur.Html5 doğrulama yararlı olabilir. – Wilt

+0

@automatix [ZF2 için bazı modüller vardır] (https://www.google.se/search?q=zf2%20client%20side%20validation), projenizde istemci tarafında doğrulamayı entegre etmenize yardımcı olabilir. Herhangi biriyle ilk elden tecrübem yok ama denemeye değer olabilir. – Wilt

0

Uygulamanızın/db'nin nasıl yapılandırıldığını bilmediğimden, yalnızca geçici verileri tutabilecek başka bir tablo oluşturabileceğinizi veya kullanıcının formu gönderdikten sonra db make'e kaydetmek yerine doğrulandığını söyleyebilirim. tüm alanları salt okunur ve orijinal gönder düğmesini, verileri kaydedecek olanla değiştirir ve kullanıcıyı verileri değiştirebileceği forma geri götürür.