1

以下を含むcustom_form_validation.phpファイルを作成しました。application\libraries

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
  class Custom_form_validation extends CI_Form_validation {
    function Custom_form_validation()
    {
      parent::__construct();  
    }

    /* at_least_one_letter() by Ben Swinburne
     * http://stackoverflow.com/a/9218114/1685185
     -----------------------------------------------*/
    public function has_at_least_one_letter( $string ) 
    {
      $result = preg_match('#[a-zA-Z]#', $string);
      if ( $result == FALSE ) $this->set_message('has_at_least_one_letter', 'The %s field must have at least one letter.');
    return $result;
    }
  }

次に、特定のコントローラーに次のようにロードします。

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

最後に、関数has_at_least_one_letterを次のように使用します。

$this->form_validation->set_rules('FieldName', 'field name', 'has_at_least_one_letter');

SOでここに示されている例に従って、独自のライブラリ、特に「拡張」に関するライブラリを構築したため、何が問題なのかわかりませんform_validation。ステップや特別な部分を見逃していませんか?

4

2 に答える 2

1

カスタム ライブラリは CI_Form_Validation を拡張します。

libraries\MY_Form_validation.php

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

class MY_Form_validation extends CI_Form_validation {

    protected $CI;

    function __construct()
    {
        parent::__construct();
        $this->CI =& get_instance();
    }

function has_at_least_one_letter($string) {
    $this->CI->form_validation->set_message('has_at_least_one_letter', 'The %s field must have at least one letter.');
    return preg_match('#[a-zA-Z]#', $string);
} 

次に使用する

$this->form_validation->set_rules('FieldName', 'field name', 'has_at_least_one_letter');
于 2013-01-27T16:11:09.013 に答える
0

CodeIgniter で正規表現検証を実行するために別の関数を作成する必要はありません。次のように正規表現を指定できます。

$this->form_validation->set_rules('FieldName', 'field name', 'regex_match[#[a-zA-Z]#]');
于 2013-01-31T22:34:01.727 に答える