2011-12-13 14 views
7

min_length और max_length सत्यापन बाधाओं के लिए CodeIgniter में कस्टम सत्यापन संदेश सेट करने का प्रयास करते समय मुझे एक त्रुटि मिल रही है।प्रमाणीकरण max_length, codeigniter में min_length

ये मेरी मान्यता नियम हैं:

$this->form_validation->set_rules('username', 'Username', 'required|xss_clean|min_length[6]|max_length[10]'); 
$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]|max_length[20]'; 

ये अपने कस्टम सत्यापन संदेश हैं:

$this->form_validation->set_message('min_length[3]', '%s: the minimum of characters is three'); 
$this->form_validation->set_message('max_length[20]', '%s:the maximum of characters is 20'); 

मेरे उदाहरण में हम दो क्षेत्रों है, लेकिन मैं अलग न्यूनतम और अधिकतम लंबाई के साथ कई क्षेत्रों है मान। वे सभी एक विशिष्ट बाधा मान्यताओं है। यह संदेश काम नहीं करता है। संदेश डिफ़ॉल्ट रूप से प्रकट होता है। आपकी सहायता के लिए धन्यवाद.

$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]|max_length[20]'); 


अद्यतन
शायद एक callback समारोह का उपयोग कर बेहतर होगा: ) -

उत्तर

8
$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]|max_length[20]'; 

एक बंद कोष्ठक याद आ रही है? उदा .:

$this->form_validation->set_rules('username', 'Username', 'required|xss_clean|callback__check_length[6,10]'); 


/** 
* Callback function. Checks if the length of the user's input 
* conforms to minimum and maximum character length requirements 
* 
* @param string 
* @param int 
* @param int 
* @return bool 
*/ 
function _check_length($input, $min, $max) 
{ 
    $length = strlen($input); 

    if ($length <= $max && $length >= $min) 
    { 
     return TRUE; 
    } 
    elseif ($length < $min) 
    { 
     $this->form_validation->set_message('_check_length', 'Minimum number of characters is ' . $min); 
     return FALSE;   
    } 
    elseif ($length > $max) 
    { 
     $this->form_validation->set_message('_check_length', 'Maximum number of characters is ' . $max); 
     return FALSE;   
    } 
} 
+0

मेरे स्रोत कोड में यह ठीक है।जब मैंने अपनी पोस्ट की थी तो मैं बंद होने पर भूल गया था। मेरा संदेह जारी है। आपके सुधार के लिए धन्यवाद। – cabita

+0

@ कैबिटा - मैंने अपना जवाब अपडेट कर लिया है। – stealthyninja

+0

धन्यवाद, मैं आपके उत्तर की समीक्षा करूंगा। धन्यवाद। – cabita

2

जब set_message उपयोग कर, आप लंबाई (दोनों न्यूनतम और अधिकतम) तरीका है कि क्या किया है निर्दिष्ट नहीं कर सकते। आप या तो min_length के लिए एक सामान्य संदेश सेट कर सकते हैं और max_length की तरह:

$this->form_validation->set_message('min_length', 'The value you have entered for %s is too short'); 
$this->form_validation->set_message('max_length', 'The value you have entered for %s is too long'); 

अन्यथा, आप का उपयोग करने के CodeIgniter के कॉलबैक सुविधा होगा और एक कस्टम मान्यता समारोह जो (कम से कम लंबाई के लिए कुछ इस तरह दिखेगा की स्थापना !!)।

public function custom_min_length($str, $val) { 
    if (preg_match("/[^0-9]/", $val)) { 
     return FALSE; 
    } 
    if (function_exists('mb_strlen')) { 
     if(mb_strlen($str) < $val) { 
      $this->form_validation->set_message('custom_min_length', '%s: The Minimum Number Of Characters Is ' . $val); 
      return FALSE; 
     } else { 
      return TRUE; 
     } 
    } 
    if(strlen($str) < $val) { 
     $this->form_validation->set_message('custom_min_length', '%s: The Minimum Number Of Characters Is ' . $val); 
     return FALSE; 
    } else { 
     return TRUE; 
    } 
} 

आप इस तरह अपने सत्यापन नियम तय करेगा:

$this->form_validation->set_rules('username', 'Username', 'callback_custom_min_length[6]|required|xss_clean'); 

सूचना custom_min_length शासन पर callback_ उपसर्ग। यह प्रतिस्थापित करता है, और सामान्य min_length सीआई फ़ंक्शन के बजाय उपयोग किया जाता है।

आशा है कि मदद करता है ... मैं .. आप कैसे custom_max_length समारोह :)

+0

आपकी मदद के लिए धन्यवाद, मैं आपके उत्तर की समीक्षा करूंगा। – cabita

12

यह आसान एक बस लंबाई मूल्य प्राप्त करने के लिए एक और %s जोड़ने है क्या करने के लिए यह पता लगाने छोड़ देंगे

$this->form_validation->set_message('min_length', '%s: the minimum of characters is %s'); 

आप केवल आकार देंगे यदि आप %sदूसरी बार का उपयोग करते हैं। पहली बार यह फ़ील्ड नाम दे देंगे आपके द्वारा निर्दिष्ट ..

0

आप अपने स्वयं के सत्यापन संदेश दिखाना चाहते हैं तो ऐसा ही कुछ कार्य करें: [NUM]

अभिवादन

: शाखाओं के बिना

$this->form_validation->set_message('min_length','YOUR MESSAGE');