मैं कोडइग्निटर का उपयोग करके अपने अधिकांश वेब एप्लिकेशन विकसित करता हूं, और मॉडल को इस डेटा को भेजने से पहले, फॉर्म में सत्यापन सत्यापन कक्षा का उपयोग करके नियंत्रक के अंदर फॉर्म डेटा को सत्यापित करने का दृष्टिकोण हमेशा लेता हूं इस्तेमाल किया जाना चाहिए, उदाहरण के लिए डेटाबेस में डेटा डालें।एमवीसी आर्किटेक्चर में डेटा और फॉर्म सत्यापन
हालांकि, मैं "पतला नियंत्रक, वसा मॉडल" रेखा सुन रहा हूं - और मुझे आश्चर्य है कि मॉडल के अंदर इन सत्यापन जांचों को रखा जाना चाहिए या नहीं।
जब मैं इस दृष्टिकोण का उपयोग करने के बारे में सोचता हूं तो तीन चीजें मुझे हड़ताल करती हैं।
उपयोगकर्ता को अलग-अलग त्रुटि संदेश कैसे दिखाए जा सकते हैं, इन मॉडल फ़ंक्शंस से प्रतीत होता है बदसूरत सरणी या ऑब्जेक्ट्स लौटने के बिना? उदाहरण के लिए साइन अप करने पर एक डुप्लिकेट ईमेल। क्या मॉडल में उपयोगकर्ता को जोड़ने के लिए ज़िम्मेदार विधि को सरणी या ऑब्जेक्ट वापस करना होगा यह इंगित करने के लिए कि क्या सम्मिलन सफल हुआ था, और कोई त्रुटि संदेश?
मॉडल में सत्यापन जांच करके, नियंत्रक (POST डेटा नहीं) से विधियों की आपूर्ति की गई चर की जांच करके, मैं फॉर्म प्रमाणीकरण कक्षा का उपयोग खो दूंगा, एक वर्ग जो मुझे मेरी परियोजनाओं में बहुत उपयोगी लगता है । क्या आप सुझाव देंगे कि मैं एक वर्ग, या लाइब्रेरी लिखता हूं जिसे सीआई लाइब्रेरी की तरह फॉर्म वैलिडेशन क्लास की नकल करने के लिए इस्तेमाल किया जा सकता है, लेकिन आपूर्ति किए गए चर के लिए, और पोस्ट डेटा तक ही सीमित नहीं है?
उस चिंता के बाद ... चूंकि मॉडल को पारित होने से पहले POST डेटा को अस्तित्व (
isset($_POST['myvar'])
) के लिए मान्य किया जाना चाहिए, शेष प्रमाणीकरण को नियंत्रक में भी नहीं रखा जाना चाहिए?
कोई सुझाव, सलाह, राय की सराहना की जाएगी!
अच्छा जवाब, +1। –
आपकी बहुत विस्तृत प्रतिक्रिया के लिए धन्यवाद - मैंने आपके कुछ लिंक पढ़े हैं, अच्छा पढ़ा है! तो, क्या आप सुझाव दे रहे हैं कि मॉडल के तरीकों के अंदर एक दृष्टिकोण सत्यापित किया जा सकता है और डेटा ऑब्जेक्ट या किसी ऑब्जेक्ट का वर्णन/प्रतिनिधित्व करने वाला ऑब्जेक्ट वापस कर सकता है? जैसे एक उपयोगकर्ता रिकॉर्ड पुन: प्राप्त करने के लिए विधि में, अगर एक आईडी आपूर्ति की है, उपयोगकर्ता की वस्तु, आदि आप कैसे संभाल होगा इस लौटने के लिए, यदि एक वस्तु एक त्रुटि संदेश और एक स्थिति कोड है कि वापस नहीं नियंत्रक में? – Sam
@ सैम, अगर आप ActiveRecord ऑब्जेक्ट्स का उपयोग करना चाहते हैं, तो आपको इसे अंदर रखना होगा। आपको कुछ प्रकार का सेटर बनाना चाहिए, जो ऑब्जेक्ट को सत्यापनकर्ता पास करता है और फिर उसी बिंदु पर आप अपने फ़ील्ड के सेट पर सत्यापन करते हैं। और त्रुटि पर आप एक अपवाद फेंक सकते हैं, जिसे आप तब नियंत्रक पर संभालते हैं (वास्तव में सीआई में, यह "प्रस्तुतकर्ता" स्तर है। –