2017-06-25 28 views
0

我試圖讓我自己的手機自定義回調函數,但是當我想把它叫做$this->form_validation->set_rules('phone', 'phone', 'required|callback_phone');然後總是返回我'Unable to access an error message corresponding to your field name phone.(phone)'我不知道爲什麼如果我有一切好,任何想法?什麼是我的代碼總是返回我nable訪問相應的錯誤消息時,我的代碼?

$this->form_validation->set_rules('first_name', 'first_name', 'trim|alpha|required'); 
     $this->form_validation->set_rules('last_name', 'last_name', 'trim|alpha|required'); 
     $this->form_validation->set_rules('email', 'email', 'trim|valid_email|required'); 
     $this->form_validation->set_rules('phone', 'phone', 'required|callback_phone'); 
     $this->form_validation->set_rules('address', 'address', 'trim|alpha_numeric_spaces|required'); 

     if ($this->form_validation->run() == FALSE) { 
      $this->json($this->form_validation->error_array()); 
     } else { 
      if (empty($data)) { 
       $this->json(array('msg' => 'vacio')); 
      } else { 
       if (!$this->providers->isExistsProvider($data)) { 
        $this->providers->addProvider($data); 
        $this->json(array('msg' => 'successfully added')); 
       } else { 
        $this->json(array('msg' => 'The email is used by another provider')); 
       } 
      } 
     } 

CALLBACK_FUNCTION

public function phone($phone) { 
     if (preg_match('/^[+]?([\d]{0,3})?[\(\.\-\s]?([\d]{3})[\)\.\-\s]*([\d]{3})[\.\-\s]?([\d]{4})$/', $phone)) { 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
    } 

HTML表單

<form class="form-horizontal" id="provider"> 
    <div class="form-group row"> 
     <div class="col-md-6"> 
      <label for="wprice" class="">First Name: </label> 
      <input type="text" name="first_name" id="first_name" class="form-control input-sm" placeholder="First Name" title="First Name" required> 
     </div> 
     <div class="col-md-6"> 
      <label for="cost_price" class="">Last Name: </label> 
      <input type="text" name="last_name" id="last_name" class="form-control input-sm" placeholder="Last Name" title="Last Name" required> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="description" class="col-sm-2 control-label">Email: </label> 
     <div class="col-sm-10"> 
      <input type="email" name="email" id="email" class="form-control input-sm" placeholder="Email" title="Invalid Email" required> 
     </div> 
    </div> 
    <div class="form-group row"> 
     <div class="col-md-6"> 
      <label for="wprice">Phone: </label> 
      <input type="text" name="phone" id="phone" class="form-control input-sm" placeholder="Phone" title="Phone" required> 
     </div> 
     <div class="col-md-6"> 
      <label for="cost_price">Address: </label> 
      <input type="text" name="address" id="address" class="form-control input-sm" placeholder="Address" title="Address" required> 
     </div> 
    </div> 
</form> 

回答

0

因爲你添加自定義規則,所以你必須爲自定義規則添加消息。您可以使用表單驗證庫的函數set_message添加消息。另一種方法是在set_rules中定義消息。請參閱Setting Error Messages文檔。

$this->form_validation->set_rules('first_name', 'first_name', 'trim|alpha|required'); 
$this->form_validation->set_rules('last_name', 'last_name', 'trim|alpha|required'); 
$this->form_validation->set_rules('email', 'email', 'trim|valid_email|required'); 
$this->form_validation->set_rules('phone', 'phone', 'required|callback_phone'); 
$this->form_validation->set_rules('address', 'address', 'trim|alpha_numeric_spaces|required'); 

$this->form_validation->set_message('phone', 'Phone number is invalid!'); 

if ($this->form_validation->run() == FALSE) { 
    $this->json($this->form_validation->error_array()); 
} else { 
    if (empty($data)) { 
     $this->json(array('msg' => 'vacio')); 
    } else { 
     if (!$this->providers->isExistsProvider($data)) { 
      $this->providers->addProvider($data); 
      $this->json(array('msg' => 'successfully added')); 
     } else { 
      $this->json(array('msg' => 'The email is used by another provider')); 
     } 
    } 
} 
+0

它沒有那樣工作。我不得不set_message字段,而不是callback_ –

+0

我更新了我的答案。嘗試沒有**回調_ **:'$ this-> form_validation-> set_message('phone','電話號碼無效!');'@AronImperial –

相關問題