1

次のコードを使用している「form_validation.php」でcodeIgniterがルール設定を無視している理由がわからないという問題に悩まされています。

$config = array(
'racedetails' => array(
    array(
        'field' => 'race_memberno',
        'label' => 'MembershipNumber',
        'rules' => 'required' 
    ),
    array(
        'field' => 'race_penalties',
        'label' => 'Penalties',
        'rules' => 'required' 
    )
);

次に、以下を使用してコントローラーの検証セットを呼び出します。

$this->form_validation->run('racedetails');

ただし、実行すると常にfalseと表示されます。フォームは正常に実行され、エラーは返されません。他に見逃したことがありますか?

上記の検証実行関数は、以下の範囲内で実行されます(Daleからの要求)

public function index($id){
    $this->load->library('form_validation');
    if($this->form_validation->run('racedetails')){$validated++;} 

    if($validated != 1){
        $this->process_template_build('entries/entry',$data);
    }else {
      echo "Validation Passed";
    }
}
4

2 に答える 2

1

同じ問題が発生しました。その理由は、独自のForm_validationクラスを使用して、エラー出力をグローバルにスタイリングしているためです。

そこで、ルールを親コンストラクターに渡すのを忘れました。したがって、これは独自のMY_Form_Validationクラスでどのように機能するかです。

class MY_Form_validation extends CI_Form_validation {

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

    $this->_error_prefix = '<div class="alert alert-danger" role="alert"><span class="title"><i class="icon-remove-sign"></i> ERROR</span>';
    $this->_error_suffix = '</div>';

}

}
于 2014-08-04T20:20:23.417 に答える
0

$config検証を実行する前に、実際にファイルを使用することを忘れませんでしたか?

$this->form_validation->set_rules($config);
于 2012-07-19T12:12:16.650 に答える