0

次のステートメントを使用して、CodeIgniter の from_validation ライブラリでエラーのカスタム メッセージを設定しようとすると..

$this->form_validation->set_message("is_unique", "%s already registered. Try a different %s");

得る代わりに、Username already registered. Try a different Username私は得ていますUsername already registered. Try a different users.username

ドキュメントが言う間If you include %s in your error string, it will be replaced with the "human" name you used for your field when you set your rules.

私を罠から出してください。

4

4 に答える 4

0

私は同じ問題に直面しましたが、検索中にこの回答を見つけました。Codeigniter の行 673 近くのエラー メッセージ (ファイル システム/ライブラリ/form_validation.php にあります) を作成することについて言及しています。

    // Build the error message
$message = sprintf($line, $this->_translate_fieldname($row['label']), $param);

私はそれを編集しました:

// Build the error message
if($rule == 'is_unique') {                                      //my code here

    $vars_num = substr_count($line, '%s');                      //my code here
    for($i = 0; $i < $vars_num; $i++){                          //my code here
        $params[] = $this->_translate_fieldname($row['label']); //my code here
    }                                                           //my code here
    $message = vsprintf($line, $params);                        //my code here

} else {                                                        //my code here

    $message = sprintf($line, $this->_translate_fieldname($row['label']), $param);

}   

それは私にとってはうまくいきます。システム ライブラリを編集するのがベスト プラクティスではないことはわかっていますが、役に立つかもしれません。

于 2013-09-02T23:35:11.967 に答える
0

あなたの問題を見ると、使用している言語ファイルにはインデックス user.username がないようです。ユーザー言語ファイルで定義し、何が起こるかを確認してください。

言語のリファレンスはこちら

Codeigniter 言語クラス

Codeigntier 言語ヘルパー

于 2013-02-03T12:32:04.387 に答える
-2

codigniterのメッセージライブラリでカスタムメッセージを設定できます

このようなモデルコーディングの例

if(duplicate_user_name ==true){
    $this->messages->add('$user already registered. Try a different $user ', 'error');
}

次のビューでこのメッセージを印刷します

$messages = $this->messages->get(); 
            if (is_array($messages)):
                foreach ($messages as $type => $msgs):
                    if (count($msgs > 0)):
                        foreach ($msgs as $message):
                            echo ('<div class="' .  $type .'">' . $message . '</div>');
                       endforeach;
                   endif;
                endforeach;
            endif;
于 2013-02-03T11:16:46.963 に答える