2012-04-25 14 views
5

मैं "पहले सेव" मॉडल फ़ंक्शन में कुछ क्रियाएं करने वाले मॉडल उदाहरण को सहेज रहा हूं।
मैं मॉडल में कुछ त्रुटियां/संदेश जोड़ना चाहता हूं और फिर उन्हें नियंत्रक में लाने और उपयोगकर्ता को दिखाने के लिए चाहता हूं।वाईआई कस्टम मॉडल त्रुटियां

  • ActiveRecord समारोह "addError": $this->addError("dummy"=>"my message"); साथ एक डमी विशेषता यह यह करने के लिए के रूप में मैं नया डमी विशेषताओं का आविष्कार करना होगा सबसे अच्छा तरीका नहीं है का उपयोग करें:
    जहाँ तक मुझे यह कैसे लागू करने के लिए की दो विचार है।
  • मॉडल और समारोह "addCustomErrors"

हो सकता है कि वहाँ एक अंतर्निहित जिस तरह से यह या एक विस्तार करने के लिए कर रहा है के लिए एक नया संपत्ति "custom_errors" जोड़ें
वैसे भी मैं इसे कैसे कर सकता हूं?

+4

आप 'पहले सेव' के अंदर त्रुटि संदेश जोड़ना चाहते हैं? यह एक अच्छा विचार नहीं है, आप मान्य करते समय ऐसा क्यों नहीं करते? उदाहरण के लिए – Jon

+0

कारण मैं एक फ़ाइल अपलोड करता हूं और इसे जांचना है कि यह सर्वर पर अपलोड किया गया है, या मैं अन्य क्रियाएं जैसे कि समाशोधन कैश करता हूं और इस पर सत्यापन – lvil

+1

के साथ कुछ भी नहीं करना चाहिए, यह सब * सफलतापूर्वक * पूरा हो जाना चाहिए हालांकि 'सहेजें' पर कॉल करें ... – Jon

उत्तर

6

आप addError() का उपयोग कर सकते हैं लेकिन नकली विशेषताओं बनाने के लिए कोई आवश्यकता नहीं है कुछ कर सकते हैं। एक त्रुटि मॉडल पर ही कुछ भी से संबंधित नहीं है, तो आपके कुछ गलत कर: कुछ तो अपने मामले में पी

यह होगा की तरह:

$this->addError('file', 'Something happened I wasn\'t pleased with'); 

अगर वहाँ पर कोई अन्य त्रुटियाँ हैं file विशेषता वे इकट्ठा करेंगे ताकि आपको ओवरराइटिंग के बारे में चिंता करने की आवश्यकता न हो।

+0

केवल एक प्रश्न है। अगर मैं एक संदेश पास करना चाहता हूं जो कोई त्रुटि नहीं है। मान लीजिए कि मैं अपलोड की गई फाइल को प्रतिस्थापित करना चाहता हूं और उपयोगकर्ता को यह बताना चाहता हूं कि इसे बदल दिया गया है। अगर मैं इसे addError में बना देता हूं, तो मुझे यकीन नहीं है कि मॉडल सहेजा जाएगा, क्योंकि इसमें कोई त्रुटि है। – lvil

+0

त्रुटि जोड़ें मॉडल की बचत को प्रभावित नहीं करना चाहिए। जब तक यह मान्य करता है, इसे – Paystey

+0

को सहेजना चाहिए, मुझे यह सत्यापित करने की आवश्यकता है कि रिकॉर्ड दिन के गलत समय पर नहीं बनाया गया है। मैं क्या गलत कर रहा हूं? – Gherman

2

मुझे यहां समस्या नहीं दिखाई दे रही है। बस addError() http://www.yiiframework.com/doc/api/1.1/CModel#addError-detail का उपयोग करें। मॉडल उस पर save() लागू होने के बाद भी रखा जाता है, ताकि आप जैसे

yourController() 
{ 
    do_something(); 
    do_something(); 
    $model->save(); 
    $errors[]=do_what_you_have_to_do_to_define_the_errors_which_will_be_added(); 
    $model->addError(attribute, $errors); 
    $this->render(viewWhereTheErrorWillBeDisplayed, $model); 
} 
+0

प्रश्न यह है कि किसी भी विशेषता के बिना त्रुटियों को जोड़ने के लिए – Gherman

संबंधित मुद्दे