すべてのカスタム検証ルールを持つことになっている「検証ヘルパー」を作成しました。問題は、フォームの検証でそれらを使用すると、無視されているように見えることです。フォーム検証を行っているコントローラーの関数を移動すると、すべてが魅力のように機能します。検証ヘルパーは自動ロードされます。
これらの検証関数をヘルパーに入れても使用できないように見える理由はありますか?ありがとう。
すべてのカスタム検証ルールを持つことになっている「検証ヘルパー」を作成しました。問題は、フォームの検証でそれらを使用すると、無視されているように見えることです。フォーム検証を行っているコントローラーの関数を移動すると、すべてが魅力のように機能します。検証ヘルパーは自動ロードされます。
これらの検証関数をヘルパーに入れても使用できないように見える理由はありますか?ありがとう。
ヘルパーとコントローラーの機能は明らかに異なります。
に拡張 機能を作成し、そこに関数を追加しMY_Form_validation.php
てlibraries/
、最後に関数名なしでルールを設定します。 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;
}
}
ロビンの答えはそれに対処する最も簡単な方法です。ただし、できない理由は次のとおりです。
system / libraries / Form_Validation.phpの行を見てください:587
if ( ! method_exists($this->CI, $rule))
{
continue;
}
このチェックは、すべてのコールバックで実行されます。ヘルパーはクラスではなく、CIインスタンスにロードされないため、Form_Validationライブラリからは利用できません(このメソッドで具体的にコーディングされているため)