Doğrulama form nesneleri yapılır, ya da modeli olmalı?

7 Cevap php

Bu soru başta kesinlikle diğer dillerde ve çerçeveler için de geçerlidir rağmen, PHP Zend yönelik, bu yüzden herkesin görüşünü açığız.

Ben sadece son zamanlarda Zend framework kullanarak oldum ve mükemmel değil iken, ben onunla çok iyi bir zaman vardı. Beni deli bir şey, ancak, yerine modelde daha alidation in special form objects Zend kullanan insanların görüyorum örneklerin çoğu v yapmak olduğunu. Ben veri ya validators diğer girişi doğrulamak, ya da doğrulama ikinci bir yerde yapılması gerekir, ve mantık çoğaltılamaz bükülmüş ve bükülmüş olması anlamına gelir, form girişi dışında başka şekillerde sistemin içine girebilirsiniz çünkü bu kötü bir uygulama olduğunu düşünüyorum.

Ben bunu aynı şekilde hissediyorum insanlar orada diğer bazı mesajları ve blogları buldum, ama Zend geliştiriciler bir nedenle bu seçim yapılmış, ve diğer insanların sorunu olmadan kullanmak gibi, bu yüzden bazı geribildirim almak istedim Burada eden.

Dediğim gibi ben sizin kadar, veya az kullanmak diye Zend tasarlanmış bu yana, oldukça Zend çerçeve sınırları içinde çalışmak yerine, bir bütün olarak konuya bakmak için önemli olduğunu düşünüyorum rağmen, bu esas, Zend için geçerlidir , siz istediniz.

7 Cevap

Bu ancak ben model kendi verilerinin geçerliliği sorumlu olması gerektiğine inanıyoruz, olmayan bir zend specfic cevaptır. Bu daha sonra doğrulama modeline aittir durumda, ancak bu her zaman ulaşılabilir olmayabilir ve görünümde doğrulama gerçekleştirmek için gerekli olabilir, ancak ben bu modelde değil, bir yedek yapılan doğrulama ek gerektiğini düşünüyorum Bunun için.

Sadece görünümde doğrulama sahip sorun bazı noktada muhtemelen veri başka bir görünümü istediğiniz olacaktır. Siteniz popüler hale gelebilir ve müşterilerin kendi görüşlerini oluşturmak için XML tabanlı API'ler için istiyoruz. Eğer verileri doğrulamak için müşteri güveniyor musunuz?

API'leri sağlamak zorunda değilsiniz bile, bazı müşterilerin tekrar şimdi çoğaltılamaz görünümleri doğrulama var, sayfanın tamamen farklı bir versiyonunu gerektirecek yeterince farklı özelleştirilmiş görünümlerini isteyebilirsiniz.

Ben ideal senaryo modeli görüntülenen doğrulama sonuçları ile tekrar sayfa okumak ve işlemek için görünüm için doğrulama sonuçları kullanılabilir hale getirmek için ancak doğrulama yapmak zorunda olduğunu düşünüyorum.

Ben size anında geri kullanıcı vb doğrulama verileri görüntülemek istiyorum ancak veri geçerliliği üzerinde nihai karar modeli ile dinlenme gerekiyorsa görünümü doğrulama yapıyor olması gayet makul olduğunu düşünüyorum.

Her zaman bir veritabanı şeması alakalı veri doğrulama gibi aynı şey bir uygulamayla alakalı değil olduğunu veri doğrulama hatırlamak önemlidir.

Bir kullanıcı adı ve şifre ile bir hesap oluşturur basit bir kayıt formu düşünün. Eğer karakter uzunluğunda X sayı ve karakter tipleri (ya da herneyse) iyi bir karışımını içerir istiyorum çünkü şifre doğrulama gerçekleştirmek.

Eğer bir şekilde (md5, md5 + tuz, ne olursa olsun) bunlardan bir karma saklamak için gidiyoruz - Eğer düz metin parolaları saklamak için gitmiyorum çünkü Ama bunların hiçbiri, veritabanı ekleme için verileri doğrulamak için geçerlidir. Bunun yerine bir düzgün oluşturulmuş MD5 hash olması çok muhtemeldir böylece 32 karakter onaltılık dize olduğundan emin olun olabilir.

Bu şifre örnek, tek senaryo, burada bu konuda açıklama için sadece iyi bir değildir.

Peki cevap ne? Ben herhangi bir çözüm uyan tüm var sanmıyorum. Bazen iki verileri doğrulamak için (gerek?) Isteyecektir. Bazen bir kez, sadece Modelinde bunu yapacağım. Tıpkı iyi uygulamanın ihtiyaçlarına mümkün olduğunca bu maç.

Zend Framework kurşun-geliştiricilerinden biri - - Belki tarafından Matthew Weier O'Phinney Using Zend_Form in Your Models bakmak gerektiğini tam olarak bu soruya onun görünümü için.

Peki, doğrulama pek çok farklı düzeylerde yapılabilir ve genellikle bunların hiçbiri "iyi" dir. Tabii ki, modeli şeklinde gelmiyor geçersiz veri ile doldurulur olabilir, ama biz de olan veri herhangi bir model için gitmeyin formlar oluşturabilirsiniz.

Ayrıca modellerde direkt doğrulama unsually biz hata mesajları göstermek ve daha sonra kullanıcı tarafından girilen verileri formu yeniden doldurmak istiyorsanız, sorunların nedenleri, form işleme sistemi ile entegre değildir.

Çözümlerin ikisi de kendi artıları ve eksileri var. Bu doğrulama nihayet bazı düzeyde yapılması gerektiğini bize sağlayan bir sisteme sahip olmak mükemmel olurdu. Form bazı verileri doğrulamak değilse, o modeli tam tersi yapar ve. Ne yazık ki, böyle bir kütüphanenin duymamış, ama ben çerçeveler validators unsually kaynak bağımsız olduğunu belirtmeliyiz. Onlara POST veri geçirebiliriz, ama aynı vs düzgün çözümlü CSV retreived bilgi, MySQL veritabanları ile yapılabilir

Ben Zend farkında değilim. Ama.

Sizin modelin geçerli veri almak zorunda. Modeli ve onun yöntemleri tekrar tekrar verileri kontrol edilmemelidir. Tabii ki gerçek doğrulama yapmak ve gui doğrulama veya diğer veri giriş yerden aranmalıdır işlevleri olmalıdır vardır.

Eğer modeli tarafında yapabileceğiniz en iyi doğrulama yerini alındığını kalkınma zaman emin olmak için tüm verilere çağrı "İddialar" dir.

Alt kod seviyesi (UI, modeli, utils) daha az doğrulama ve kod kontrol olmalıdır. Olarak daha sonra aynı doğrulama daha bir sonra adı verilecek bu büyük bir şans var.

Nasıl modelinde doğrulama formunda estetik doğrulama koyarak ve iş kuralları hakkında.

Örneğin bir kayıt formu almak.

Form parola / aynıdır şifre alanını onaylamak ve kullanıcı I terimlerinin onay kutusunun Katılıyorum kontrol o, e-posta alan kesilmiş ve geçerli bir e-posta içerir emin olur.

Kayıt modeli, e-posta tabloda henüz alınmış değil emin olur tuz ve parola hash olacaktır.

Ben genellikle iki bölünmüş nasıl.

(- Sayılar sayılar olmalıdır emin metin kutuları yapmak, yani bazı form doğrulama yapmak) bu giriş forma özgü olduğu için girilmiş edilirken kullanıcı girişi valide edilmelidir.

İş mantığı muhtemelen (yani onlar zaten ayrılmış have't emin olun aynı odada veya böyle bir şey) modeli özgü olduğundan model üzerinde valide. Olmalıdır

Model seviyede doğrulama ile ilgili problem model farklı şekillerde kullanılabilir olabilir olmasıdır. Bir senaryo için doğru giriş için başka doğru girdi olmayabilir.

Diğer sorun, genellikle kötü girişi vardır form denetimi etrafında kırmızı kutusunu görüntüleme gibi bazı bağlam duyarlı doğrulama, istiyor.

Modeli veya veritabanı kullanıcı kodu tamamen yanlış bir şey (kısıtlar, vb) yapıyor olmadığından emin olmak için bazı ekstra doğrulama yapabilir.