1

すべてのカスタム検証ルールを持つことになっている「検証ヘルパー」を作成しました。問題は、フォームの検証でそれらを使用すると、無視されているように見えることです。フォーム検証を行っているコントローラーの関数を移動すると、すべてが魅力のように機能します。検証ヘルパーは自動ロードされます。

これらの検証関数をヘルパーに入れても使用できないように見える理由はありますか?ありがとう。

4

2 に答える 2

4

ヘルパーとコントローラーの機能は明らかに異なります。

に拡張 機能を作成し、そこに関数を追加しMY_Form_validation.phplibraries/、最後に関数名なしでルールを設定します。 callback_

例:

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

class MY_Form_validation extends CI_Form_validation {

    /* set_rule('custom_require') */
    function custom_require($str) {

        return (bool)$str;

    }

}
于 2012-05-18T12:46:49.320 に答える
1

ロビンの答えはそれに対処する最も簡単な方法です。ただし、できない理由は次のとおりです。

system / libraries / Form_Validation.phpの行を見てください:587

if ( ! method_exists($this->CI, $rule))
{
  continue;
}

このチェックは、すべてのコールバックで実行されます。ヘルパーはクラスではなく、CIインスタンスにロードされないため、Form_Validationライブラリからは利用できません(このメソッドで具体的にコーディングされているため)

于 2012-05-18T13:18:11.893 に答える