0

ああ..私はこれに長い間費やしてきましたが、私は問題を見つけたと信じています。

基本的に、ユーザーが画像をクリックすると入力される非表示のフィールドがあります。

ユーザーが画像をクリックしている必要がありますが、CIフォーム検証クラスでの「必須」チェックの一般的なフォームエラーメッセージは必要ありません。

そのため、拡張フォーム検証クラスでimage_required関数をすばやく作成し、このルールが非表示フィールドに適用されるようにルールを設定しました。

function image_required($str)
    {

    $CI =& get_instance();

    $CI->form_validation->set_message('image_required','Please click the image above.');

    if($str != '')
    {
        return TRUE;
    }
    else
    {
        return FALSE;
        } 
}

非表示フィールドが空白の場合、エラーは呼び出されていません。

これは、CIがこのフィールドは空であるが「必須」ではないと言っているためであると私は信じるようになりました。したがって、フィールドの他のすべての検証ルールを無視します。これは正しいです?

もしそうなら、どうすればこのフィールドを設定する必要がありますが、カスタムエラーメッセージが表示されますか?

前髪頭

ありがとう

4

2 に答える 2

2

'_execute'ルーチン(system / libraries / Form_validation.php)のソースコード(v2.1.3)を見ると、486行目に表示されます。

     // If the field is blank, but NOT required, no further tests are necessary

ですから、あなたは正しいです、それは必要である必要があり、それからそれはあなたのルールを処理します。

ルールを処理する不要な空白フィールドを使用できるように修正するには、application / librariesフォルダーに「MY_Form_validation.php」というファイルを作成して「_execute」メソッドをオーバーライドする必要があります(おそらく、既存のライブラリをどのように拡張するかを正確に確認する必要があります)、次に'_execute'メソッドをコピーし、コードを変更して、必須ではないが空白のエントリを続行します。

于 2013-02-27T13:48:47.243 に答える
0

私はCIが大好きですが、これでは必要な柔軟性が得られないと言わざるを得ません。空にすることはできませんが、必須ではないフィールドを用意することは完全に合理的です。のように、「ユーザーは値を入力する必要があります」を強制することはありませんが、空白を送信することはできません。誰かがEMPTYとREQUIREDの間で混乱したと思います。

1)必須:ユーザーはフィールドに値を入力する必要があり、空にすることはできません(つまり、'')2)空:ユーザーは値を入力する必要はありませんが、入力する場合は空にすることはできません。これはREQUIREDと同じではありません...コールバックを再度使用するようです。

REQUIREDには、2つの論理ステップ(1->値を入力する必要があり、2->空にすることはできません)が組み込まれています。これらの2つのステップは、/またはを許可するために論理的に分離する必要があります。

制約の観点からは、REQUIRED、NOTNULLのいずれかになります。または必須ではありません、NULLではありません。

于 2020-02-05T11:29:55.107 に答える