2011-04-06 15 views
8

मैं वर्तमान में beforeValidate() मॉडल के कॉलबैक में किसी फ़ॉर्म पर कुछ अतिरिक्त सत्यापन पर काम कर रहा हूं।केकेपीएचपी मॉडल-> अमान्य त्रुटि त्रुटि नहीं दिखाता

मैं निम्नलिखित कोड है:

function beforeValidate(){ 
    $i = 0; 
    foreach($this->data['CapitalCategory'] as $capital_category){ 
     if(!empty($capital_category['value'])){ 
      $this->invalidate('CapitalCategory.'.$i.'.points', 'error!'); 
       return false; 
      } 

     $i++; 
    } 
    return true; 
} 

मैं सब कुछ डिबग, और यह झूठी वापसी करता है तो मूल्य मौजूद है। लेकिन फिर, फॉर्म पुनः लोड होता है और अंक इनपुट के नीचे कोई संदेश नहीं दिखाया जाता है! साथ ही, अगर मैं validationErrors डीबग करता हूं, तो सरणी में वह त्रुटि होती है जिसे प्रदर्शित करने की आवश्यकता होती है। समस्या क्या हो सकती है?

किसी भी मदद की सराहना करें!

संपादित

इस तरह मैं अपने आदानों का निर्माण कर रहा हूँ:

echo $this->Form->input('CapitalCategory.'.$i.'.value', array('label' => $category['Category']['name'], 'type' => 'text')); 
     echo $this->Form->input('CapitalCategory.'.$i.'.points', array('label' => 'Puncte', 'type' => 'text')); 

मेरा मानना ​​है कि एक समस्या तथ्य यह है कि मैं CapitalModel पर काम कर रहा हूँ हो सकता है जो, में से कुछ क्षेत्रों के अलावा CapitalModel, मैंने अपने संबंधित मॉडल, CapitalCategorieModel से कई क्षेत्रों का उपयोग किया है। क्षेत्र में सत्यापन त्रुटि को बाध्य करने के लिए यह समस्या हो सकती है? यदि हां, तो मैं इसे कैसे हल कर सकता हूं?

उत्तर

0

शायद इस वजह CakePHP जहां त्रुटि संदेश

जब आप कॉल $this->invalidate ($name);
$name क्षेत्र (इनपुट) आपने बनाया है के नाम के साथ मेल खाना चाहिए डाल करने के लिए पता नहीं है ..

तो, क्या आप मुझे दिखा सकते हैं कि आप फ़ॉर्म इनपुट (फ़ील्ड) कैसे बना रहे हैं?

+0

मैंने अपना प्रश्न संपादित किया है। धन्यवाद। – linkyndy

+0

मैंने पहले अपने क्षेत्र के नामों में संख्याओं का उपयोग नहीं किया है .. लेकिन आप नाम के दूसरे हिस्से को एक स्ट्रिंग बनाने की कोशिश कर सकते हैं, न कि संख्या .. यानी 'राजधानी श्रेणी' के बजाय। $ I। 'अंक' ', 'CapitalCategory.F' डाल दें। $ i। 'अंक' .. .. अपने सभी कोड में प्रतिस्थापित करें और मुझे बताएं कि क्या होता है ... –

+1

मुझे उस नंबर की आवश्यकता है जिसे 'हैनी' रिलेशनशिप रिकॉर्ड सहेजने के लिए केक को बताने के लिए। .. जब राजधानी बचाई जाती है, तो राजधानी श्रेणी मॉडल प्रत्येक राजधानी श्रेणी के लिए एक रिकॉर्ड बचाता है। [संख्या]। फ़ील्ड। – linkyndy

0

सुनिश्चित करें कि आप मॉडल को भ्रमित नहीं कर रहे हैं :: $ सत्यापनकरणकर्ता और नियंत्रक :: $ सत्यापन त्रुटि। वे अलग हैं और एक जादू बंधन साझा नहीं करते हैं। एक मॉडल विधियों द्वारा पॉप्युलेट किया जाता है, दूसरा नियंत्रक विधियों द्वारा पॉप्युलेट किया जाता है।

+0

मैं नहीं हूं। कृपया मेरा संपादन जांचें, शायद यह अधिक सहायक है। धन्यवाद। – linkyndy

+0

पीआर ($ यह -> [MODEL_NAME] -> सत्यापन प्रवेश); आपको क्या मिलता है? – Rui

+0

मुझे सही त्रुटि मिलती है जिसे प्रदर्शित करने की आवश्यकता है। – linkyndy

1

अच्छा, स्वीकार्य रूप से मुझे नहीं पता कि यह आपके लिए क्यों नहीं दिख रहा है। जो मैं समझता हूं उससे यह केकफैप 'जादू' चीज करनी चाहिए। लेकिन मेरे पास ऐसी चीजें हैं जो वैध होने की कोशिश करते समय मेरे साथ होती हैं और केकफ़्पी जादुई रूप से त्रुटि प्रदर्शित नहीं करती हैं। मैंने फॉर्महेल्पर क्लास के किसी अन्य फ़ंक्शन का उपयोग करके इसे हल किया।

$this->Form->error('field'); 

और फिर मैं पूरी तरह से यह स्वीकार करते हैं सीधे अपने सवाल का जवाब नहीं है, लेकिन यह कम से कम से निपटने के क्या चल रहा है की एक केक तरीका है। ओह और उपरोक्त फ़ंक्शन शून्य में वापस आ जाता है यदि कोई त्रुटि नहीं है, तो आप इसे कहीं भी रख सकते हैं जहां आप संदेश दिखाना चाहते हैं।

यदि आप देखना चाहते हैं तो एपीआई में फ़ंक्शन के केक लिंक यहां दिया गया है। FormHelper API 2.4

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