Nerede bir MVC proje meydana doğrulama oluşturmalıdır?

5 Cevap php

Ben Kohana kullanıyorum, ama bu soru daha genel olduğunu düşünüyorum.

Ben denetleyicisi form doğrulama yapıyor ve bugüne kadar iyi çalıştı. Ama son zamanlarda, ben bir sorun koştu ettik.

Ben bir yorum modeli var, ve ben ona birkaç farklı denetleyicileri yorumu siz gönderebilirsiniz. Bunun yerine her denetleyici bir doğrulayıcı sahip, ben modelinde yerleştirdi.

Bu harika, çünkü

  • Değiştirmek için tek bir yer / geçerlilik kuralları eklemek (KURU)

Bu berbat çünkü

  • Ben açıkçası kontrolöre bir başarı veya başarısızlık dönmek gerek, ve Kohana en doğrulama kütüphanesi bir dizi olarak hata verir. Yani benim dönüş bu gibi görünüyor

ON SUCCESS

array('success' => true);

ON FAIL

array('success' => false, $errors);

Ben yardım edemem ama bu yanlış olduğunu düşünemiyorum. Bu feels yanlış.

Ben denetleyicisi bunu yaparsan, ben sadece yapabilirim

if ($post->valkimlikate()) {
     doWhatever();
} else {
     $this->template->formErrors = $post->errors('form_errors');
}

Hangi (benim için) daha iyi gibi görünüyor.

Bunu yapmak için daha iyi bir yolu var mı? Ben denetleyicisi veya yöntemi doğrulamak gerekir? Çıldırıyor muyum?

5 Cevap

Ben dürüst yöntemi, alex ile yanlış bir şey görmüyorum. Eğer düzgün yapıyoruz gibi görünüyor. Benim için genellikle MVC geldiğinde doğru bir şey yapıyorum ölçmek için kıstas DRY prensibi, takip ediyoruz.

Ben tüm doğrulama kuralları model içinde gidebilir sanmıyorum. Doğrulama tüm form (veya API) hakkında. Aslında sizin veri doğrulama zaman, şeylerin en context bağlı olmasıdır.

Örneğin, bu eyleme bir giriş yapmış kullanıcı? Siz modeli doğrulanmış olması ile çift kimlik doğrulama katman olmaz. Yani, tüm kontroller kontrolör içine gitmek gerekir. Modeli bağlam-agnostik olduğunu; Form kontrolöre "ait" ve bağlam-bilmektedir.

Ben iyi oluşturulmuş veri için per-form doğrulama kuralları plus basic içinde-model kontrolleri sahip gitmek için yol olduğunu düşünüyorum. Eğer Auth :: örneğini () veya modelin validate () fonksiyonu içinde Session :: örneğini (), arıyorsan o zaman yanlış yapıyoruz.

Yağ modelleri. Küçük denetleyicileri. Ben hep yaptım yoludur. Bana Doğrulama veri katmanı yer almaktadır. (En azından benim için) veri katmanı modelidir. Benim doğrulama modeli neden ben normalde benim MVC çerçevesi olarak CakePHP'ye kullanmak ... Belki de bu. Cakephp yoludur.

Ben yöntemi yapmak, duyguları üzerinde kendimi tekrarlamak değil tercih. Eğer isteseydi bir görünümde diziden hataları gösterebilir beri dizinin yanı sıra kullanışlı. Ben Kohana kullanmadıysanız, ama ben ASP.NET MVC kullanarak edilmiştir doğrulama yöntemi benzer bir liste ile bana sağlar ve o zaman tam olarak neyin yanlış olduğunu kullanıcıya göstermek olabilir.

Her zaman gerekir (eğer varsa) istemci (JS) üzerinde doğrulamak. Ve bu atlanabilir beri - siz de sunucuda doğrulamak. Ve evet - bazı yeniden forma için doğrulama koyarak harika bir fikir