2017-07-26 6 views
0

私はCodeigniter 3を使用しています。鉱山のような類似の問題を持つさまざまなスタックオーバーフローリンクを参照しました。しかし、私はこの問題を解決することができませんでした。コールバック関数customAlphaは、現在のプロジェクトのlibrariesフォルダにあるファイル - > MY_Form_validation.phpから呼び出されます。私は正規表現を何回か変更しましたが、使用しませんでした。助けてください。codeigniterのアルファベット文字の妥当性検査規則を設定できません

Controller-> Login_c.php

<?php 
class Login_c extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form', 'url')); 
     $this->load->library('encrypt'); 
     $this->load->model('User/login_m'); 
     $this->load->library('session'); 
     $this->load->library('form_validation'); 
    } 

    public function register_user() 
    { 
     $this->form_validation->set_rules(
     'uname', 'Full Name', 
     'trim|xss_clean|required|min_length[4]|callback_customAlpha', 
     array(
       'required'  => 'Please provide %s.', 
       'customAlpha'  => 'Only characters are allowed in Full Name field' 
     ) 
     ); 

     $this->form_validation->set_rules('upass', 'Password', 'required|min_length[5]'); 

     $this->form_validation->set_rules('cpass', 'Password Confirmation', 'required|matches[upass]'); 

     $this->form_validation->set_rules('uemail', 'Email', 'required|valid_email|is_unique[user.uemail]'); 

     $this->form_validation->set_rules('umobile', 'Mobile Number', 'required|min_length[10]|max_length[10]'); 

     if($this->input->post('oemail')) 
     { 
      $this->form_validation->set_rules('oemail', 'Email', 'required|valid_email|is_unique[user.oemail]'); 
      $oemail = $this->input->post('oemail'); 
     } 
     if ($this->form_validation->run() == FALSE) 
     { 
      $errors['err'] = validation_errors(); 
      $this->load->view('User/signup.html',$errors); 
     } 
     else 
     { 
      //Code to store user entered data in database 
     } 
    } 
} 

?> 

MY_Form_validation.php

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

    class MY_Form_validation extends CI_Form_validation 
    { 

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

     public function customAlpha($str) 
     { 
      //Validation for alphabetical characters and spaces 
      if (!preg_match('/^(?:[A-Za-z]+(?:\s[A-Za-z]+|$)){1}$/', $str)) 
      { 
       return false; 
      } 
      else 
      { 
       return true; 
      } 

     } 

    } 
?> 

答えて

0

私は最終的に自分でこの問題を解決することができました。以下は機能したソリューションです。

MY_Form_validation.php

class MY_Form_validation extends CI_Form_validation 
{ 

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

    public function customAlpha($str) 
    { 

     if (!preg_match('/^([a-z]+(-|)?)+$/', $str)) 
     { 
      return false; 

     } 
     else 
     { 
      return true; 

     } 

    } 

} 

Login_c.php

class Login_c extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form', 'url')); 
     $this->load->library('encrypt'); 
     $this->load->model('User/login_m'); 
     $this->load->library('session'); 
     $this->load->library('form_validation'); 
    } 

    public function register_user() 
    { 


     $this->form_validation->set_rules(
     'uname', 'Full Name', 
     'required|min_length[4]', 
     array(
       'required'  => 'Please provide %s.' 
     ) 
     ); 

     $this->form_validation->set_rules('upass', 'Password', 'required|min_length[5]'); 
     $this->form_validation->set_rules('cpass', 'Password Confirmation', 'required|matches[upass]'); 
     $this->form_validation->set_rules('uemail', 'Email', 'required|valid_email|is_unique[user.uemail]'); 

     $this->form_validation->set_rules('umobile', 'Mobile Number', 'required|min_length[10]|max_length[10]'); 

     $validation = $this->form_validation->customAlpha($this->input->post('uname')); 

     if($this->input->post('oemail')) 
     { 
      $this->form_validation->set_rules('oemail', 'Email', 'required|valid_email|is_unique[user.oemail]'); 
      $oemail = $this->input->post('oemail'); 
     } 
     else if ($this->form_validation->run()== FALSE) 
     { 
      $errors['err'] = validation_errors(); 
      $this->load->view('User/signup.html',$errors); 

     } 
     else if($validation == false) 
     { 
      $errors['err'] = "Error in name field"; 
      $this->load->view('User/signup.html',$errors); 
     } 
     else 
     { 
      //Code to store user entered data in database 
     } 
    } 
} 

?> 
関連する問題