2012-02-06 10 views
8

में फॉर्म सत्यापन को विस्तारित करना मैंने 'क्लास/कोर' में 'My_Form_validation.php' नामक इस क्लास फ़ाइल को रखा है और मैंने इसे 'एप्लिकेशन/लाइब्रेरी' में रखने का भी प्रयास किया है।कोडिनेटर

मेरी नियंत्रक में मैं

$this->form_validation->set_rules('user_postcode', 'Postcode', 'valid_postcode|trim|required|xss_clean'); 

उपयोग कर रहा हूँ इस My_Form_validation.php में क्या है - वास्तविक तर्क यहाँ क्योंकि मैं विकल्पों में से एक जोड़े को वास्तव में डाक कोड को मान्य करने के लिए है सवाल में नहीं है। मुझे मदद की ज़रूरत है कि यह समझ रहा है कि यह क्यों लोड नहीं हो रहा है या बुलाया जा रहा है!

मेरा सीआई संस्करण परिभाषित करता है ('CI_VERSION', '2.0.2');

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

/** 
* Form validation for UK Postcodes 
* 
* Check that its a valid postcode 
* @author James Mills <[email protected]> 
* @version 1.0 
* @package FriendsSavingMoney 
*/ 

class MY_Form_validation extends CI_Form_validation 
{ 

    function __construct() 
    { 
     parent::__construct(); 
     log_message('debug', '*** Hello from MY_Form_validation ***'); 
    } 

    function valid_postcode($postcode) 
    { 

     /** 
     * 
     * UK Postcode validation expression from Wikipedia 
     * http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom 
     * 
     * Note: Remember to strtoupper() your postcode before inserting into database! 
     * 
     */ 

     $pattern = "/^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2})$/"; 


     if (preg_match($pattern, strtoupper($postcode))) 
    { 
      return TRUE; 
     } 
     else 
     { 
      $this->set_message('valid_postcode', 'Please enter a valid postcode'); 
      return FALSE; 
     } 
    } 
} 
+2

विवेक की जाँच करता है: 1) फ़ाइल है 'आवेदन/पुस्तकालयों/MY_Form_validation.php', 2)' $ config [ 'subclass_prefix '] =' MY _ '; ', 3) आपका कॉन्फ़िगर लॉग थ्रेसहोल्ड आपके डीबग संदेश को आउटपुट करेगा (और फ़ाइल अनुमतियां इसे अनुमति दें) – landons

+0

सबकुछ हाँ ... –

+0

कोई सुराग नहीं। मुझे इसे सभी प्रकार के 'var_dump() 'और' die()' कॉल के साथ डीबग करना होगा ... – landons

उत्तर

17

क्योंकि आप एक CodeIgniter पुस्तकालय और नहीं एक प्रमुख घटक का विस्तार कर रहे हैं, तो आप रखना चाहते हैं कि application/libraries (नहीं application/core) में।

और निश्चित रूप से, Form_validation लाइब्रेरी को अपने नियंत्रक कोड में लोड करना न भूलें।

$this->load->library('form_validation'); 

अन्य बातों की जांच करने के लिए:

  • फ़ाइल का नाम केस संवेदनशीलता (MY_Form_validation.php भार जबकि My_Form_validation.php नहीं होगा)
  • कक्षा नाम केस संवेदनशीलता (कक्षा MY_Form_validationCI_Form_validation फैली)

संदर्भ सामग्री:

Form_validation पर

function __construct($rules = array()) 
{ 
    parent::__construct($rules); 
} 

देखो और प्रदान करते हैं:

+0

मैंने 'MY_Form_validation' फ़ाइल और फ़ाइल नाम में सभी प्रकार के पूंजीकरण की कोशिश की लेकिन उनमें से कोई भी काम नहीं किया। क्या सीआई के संस्करण के आधार पर कोई बदलाव हो सकता है? –

+2

@ टिपेटर्सन: मैंने वही काम किया। क्या आप इसका समाधान समझने में सक्षम थे? – user1149244

+0

मेरे पास अंतहीन काम करने के लिए अंतहीन दुःस्वप्न है। मेरी फ़ाइल और कक्षा दोनों को 'MY_Form_validation' के बजाय' My_form_validation' नाम दिया गया था। मैं अब खुद को लात मार रहा हूं –

11

आप माता-पिता निर्माता को यह पारित

जैसे अपने __construct पद्धति पर $ नियम जोड़ सकते हैं और यह भी करने के लिए है एक ही चर।

+0

ialbescu, एफटीडब्ल्यू। न केवल यह समझ में आता है, यह भी काम करता है। मुझे विश्वास नहीं है कि मैंने नियम सरणी को पारित किया है। अच्छी तरह से किया। +1 – Abinadi

2

मुझे पता है कि यह पुराना है, लेकिन अगर किसी और ने आधुनिक दिन में इस पर ठोकर खाई, तो यहां एक त्वरित उदाहरण दिया गया है। (वर्तमान में 3.0.6 का उपयोग कर, लेकिन मेरा मानना ​​है कि यह रूप में अच्छी तरह 2 पर काम करेंगे।)

class MY_Form_validation extends CI_Form_validation { // Capitalization matters 

    protected $CI; 

    public function __construct() { 
     parent::__construct(); 
    } 

    /** 
    * Valid Date 
    * 
    * Verify that the date value provided can be converted to a valid unix timestamp 
    * 
    * @param string $str 
    * @return bool 
    */ 

    public function valid_date($str) { 
     $CI = $this->CI =& get_instance(); // Get your CodeIgniter instance 

     if (($str = strtotime($str)) === FALSE) { // Basic timestamp check 
      // Set error message by calling the method through the CI instance. 
      // Obviously must be done BEFORE returning any value 
      $this->CI->form_validation->set_message('valid_date', '{field} must be a valid date.'); 
      return FALSE; 
     } 

     return TRUE; 
    } 
} 
+1

'$ सीआई-> form_validation == $ यह' fyi। उदाहरण प्राप्त करने की कोई ज़रूरत नहीं है। –