Eğer Model doğrulamak gerekir?

3 Cevap php

Bu Symfony ile ilgili hızlı bir soru, ama genel bir MVC bir soru olabilir.

Benim modelinde bir sınıf var, örneğin, {[(0)].} Bu sınıf email_address bir özelliğe sahiptir. Bu değer, her WebUser için benzersiz olmalıdır.

Şimdi, ben bu kadar hepsi benim Symfony formları email_address için benzersiz olduğunu doğrulamak yaptık Ben modele bu doğrulama eklemek gerekir eğer WebUser, ancak ben merak ediyorum verildi de?

Ama bu da beni düşünme var, aslında modelde her set() yöntemi doğrulamak gerekir? Ancak çoğu (hepsi değilse de) veri de doğrulamak denetleyicileri, geçeceği, emin hatalı veri veritabanında biter yapmak için akıllıca yeterli bir karar gibi görünüyor. Yani benim için iki kez aynı doğrulama koşuyorum görünüyor ve bu sadece anlamsız görünüyor?

Bu konuda düşünceleriniz nelerdir? Bu iş mantığını dikte gibi bu en mantıklı olarak ben hala modelinde doğrulama doğru eğilerek ediyorum.

Eğer modeli doğrulamak gerektiğini, nasıl form çerçeve tarafından doğru işlenir Symfony'de uygun bir set() hata atmak mı?

Teşekkürler.

3 Cevap

Ben "Doğrulama değil, ön-uç mantık etki mantığının bir parçası olmalıdır" katılmıyorum.

Doğrulama uygulama karmaşık bir işlevsel parçasıdır ve must farkında bağlam olmak. yani. Eğer kullanıcı böylece, o var kimlik ne tür kaydedilir istek / form durumu ve edilir bilmek zorunda. Modeller yerine must agnostik bağlam (herhangi bir ortamda cli vb http isteği değil, aynı zamanda, sadece çalışmak için değil) olacak böylece kullanıcı, devlet ve http isteği hakkında bilmiyorum. Bu modeli sınıfların testability için güçlü bir gerekliliktir.

Summentioned nedenle fonksiyonel doğrulama must uygulama durumu (yani oturum) bilen forma aittir. Symfony gerçekten form bileşeni ait sfValidator * sınıfları ile bir çok yardımcı olur. Bu formlar functional testi ile test edilir nedeni budur.

Veri doğrulama (değer bir tamsayı ya da bir dize ise yani o kadar null bulunuyor ve kontrol, kontrol edin) yerine modelinde olmalıdır. Bu kolayca Doktrin-şema doğrulama kuralları ile gerçekleştirilir.

Ben Symfony özellikle konuşamıyor, ama ben bilerek Zend Framework form doğrulama shun ve yerine benim modellerinde doğrulamak biliyoruz (Zend Framework kendi Model bileşeni sağlamaz, bu nedenle konuyla ilgili hiçbir gerçek görüşü vardır).

Orada form doğrulama ile yanlış bir şey, ama ben de model üzerinde doğrulama gerektiğini düşünüyorum. Tabii ki kötü veri ile çalışan zaman israf olmayacak - formda doğrulanıyor işleme mantığı ve özellikle karmaşık, kontrol hızlı ve kolay giriş için yararlı olabilir.

Ben model doğrulama iyi olduğunu düşünüyorum Nedenleri:

  • Bu DB geçmeden önce bir modeli şeklinde geçtikten sonra verileri değiştirmek ve bir şans var
  • Doğrulama etki alanı mantık parçası olmalıdır, değil ön-uç mantığı (I Symfony gerçekleştirmek katılmıyorum görünüyor).
  • Doğrulama devlet yerine formu nesne, model nesne ile geçecek.

Tamamen, sadece modelin, iyi bir çözüm gibi iki seslerin bir arada doğrulayarak satılan değilseniz.

EDIT: Günün sonunda, sadece bu konuda sizin çerçeveye gitmek için en mantıklı olabilir. Symfony denetleyicisi doğrulama karşı en inatçı görünüyor ve model doğrulama için kolay bir yol sağlamaz, sadece onlar (veya Symfony toplum eğilir hangi yönü) ne yapmak istediğinizi ile gitmek. Lütfen çerçeve Dövüş eğlenceli değildir.

Ben Başkalarına kullanarak Kullanıcı MVC Validator Aracı Ket Insted ModelState kendi Easyer güveniyor ve aynı zamanda test edilebilir ve onun değil sizi özgür çalışma yol vermek modele formcollected dayalı olmalı düşünün

Marwan Hafız Saygılar