2013-02-03 14 views
6

क्या वाईआई मॉडल के rules() विधि में तत्वों की एक सरणी की आवश्यकता है? उदाहरण के लिए:किसी एरे के लिए वाईआई सत्यापन नियम

public function rules() 
{ 
    return array(
      array('question[0],question[1],...,question[k]','require'), 
    ); 
} 

मैं स्थितियों में, जहां मैं तत्वों के कई सरणियों को मान्य करने की जरूरत में चल रहे हैं एक रूप से आ रहा है और मैं कर रहा से इसके बारे में जा रहा अन्य के लिए एक अच्छा तरीका खोजने के लिए नहीं कर पा रहे ऊपर। attributeLables() निर्दिष्ट करते समय मुझे एक ही समस्या है। अगर किसी के पास कुछ सलाह है या ऐसा करने का बेहतर तरीका है तो मैं वास्तव में इसकी सराहना करता हूं।

+0

dlnGd0nG, लिंक का उल्लेख नहीं है कि तत्वों के सरणी को कैसे सत्यापित किया जाए। – dataplayer

+0

मैंने सोचा कि आप टैब्यूलर इनपुट जोड़ना चाहते हैं। वे प्रश्न क्या हैं [x] '? क्या वे वर्ग गुण हैं? और वाईआई मॉडल द्वारा आप क्या संदर्भ दे रहे हैं? 'कैक्टिव रिकार्ड', 'सीफ्रेम मॉडल' या 'सीमोडेल'? – dInGd0nG

+0

dlnGd0nG, 'प्रश्न [x]' उन फ़ॉर्मों के नाम मान हैं जिन्हें मैं सबमिट कर रहा हूं। उल्लेख किया गया वाईआई मॉडल विशेष रूप से CFormModels हैं। – dataplayer

उत्तर

13

आप array('question','type','type'=>'array','allowEmpty'=>false), के साथ द्वारा type

public function rules() 
{ 
    return array(
      array('question','type','type'=>'array','allowEmpty'=>false), 
    ); 
} 
+0

यह वही है जो मैं खोज रहा था। मैंने बस 'टाइप' को उपनाम दिया है, जैसा कि आपने बताया है: 'सरणी (' प्रश्न ',' CTypeValidator ',' type '=>' array ',' allowEmpty '=> false),' और यह पूरी तरह से काम करता है। धन्यवाद! – dataplayer

2

CTypeValidator एलियास उपयोग कर सकते हैं तो आप सिर्फ पुष्टि कर सकते हैं कि आप वास्तव में सरणी प्राप्त करते हैं, लेकिन आप क्या इस सरणी के अंदर पता नहीं है। सरणी तत्वों को प्रमाणित करने के लिए आपको कुछ ऐसा करना चाहिए:

<?php 

class TestForm extends CFormModel 
{ 
    public $ids; 

    public function rules() 
    { 
     return [ 
      ['ids', 'arrayOfInt', 'allowEmpty' => false], 
     ]; 
    } 

    public function arrayOfInt($attributeName, $params) 
    { 
     $allowEmpty = false; 
     if (isset($params['allowEmpty']) and is_bool($params['allowEmpty'])) { 
      $allowEmpty = $params['allowEmpty']; 
     } 
     if (!is_array($this->$attributeName)) { 
      $this->addError($attributeName, "$attributeName must be array."); 
     } 
     if (empty($this->$attributeName) and !$allowEmpty) { 
      $this->addError($attributeName, "$attributeName cannot be empty array."); 
     } 
     foreach ($this->$attributeName as $key => $value) { 
      if (!is_int($value)) { 
       $this->addError($attributeName, "$attributeName contains invalid value: $value."); 
      } 
     } 
    } 
} 
संबंधित मुद्दे