2012-06-30 11 views
5

フォーム検証メッセージをカスタマイズできるように、私が編集できるcodeIgniterにファイルがありますか?codeIgniterでフォーム検証エラーをカスタマイズする方法

enter image description here

私は、より少ないスペースを消費する箇条書きリストにそれらを配置します。ここで

は、私は、出力にエラーメッセージを使用しているコードです:

<div class="alert <?php echo $alert['alert_type']; ?> min-form"> 
     <button type="button" class="close" data-dismiss="alert">x</button> 
     <h4><?php echo $alert['main_message']; ?></h4> 
     <?php echo $alert['sub_message']; ?> 
</div> 

基本的$alert['sub_message']はちょうどフォームから検証エラーを出力CodeIgniterのからvalidation_errors()機能からデータを取得しています。

+0

すでに、私はクライアント側をお勧めしたいない場合バリデーションレイヤも同様です。そのため、CodeIgniterレイヤは、何らかの形でフォームを送信できる場合にのみ表示されます。 –

+0

また、私はCIドキュメント:[コールバック:あなた自身の検証関数](http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks)を参照してください。 –

+0

@ JaredFarrishありがとう私は既にliveValidation http://livevalidation.com/を使用してクライアント側のバリデーションを持っています –

答えて

8

あなたが最大の制御のためのform_validationクラスを拡張することができapplication/libraries/MY_form_validation.phpを作成することにより、余分な検証ルールを追加する - 私が添付しました以下の例。

システムライブラリを直接編集することは悪い習慣です; CIではより良いオプションが提供されます(MY_クラス、librarieshooksなど、などのオーバーライド/カスタマイズ)。これにより、CIバージョンを簡単にアップグレードするメリットが得られます&は、アプリケーションをポータブル/カスタムコードをコアフレームワークから隔離した状態に保ちます。

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

/** 
* CodeIgniter Form Validation Extension 
*/ 
class MY_Form_validation extends CI_Form_validation { 

    /** 
    * MY_Form_validation::valid_url 
    * @abstract Ensures a string is a valid URL 
    */ 
    function valid_url($url) { 
     if(preg_match("/^http(|s):\/{2}(.*)\.([a-z]){2,}(|\/)(.*)$/i", $url)) { 
      if(filter_var($url, FILTER_VALIDATE_URL)) return TRUE; 
     } 
     $this->CI->form_validation->set_message('valid_url', 'The %s must be a valid URL.'); 
     return FALSE; 
    } 

    /** 
    * MY_Form_validation::alpha_extra() 
    * @abstract Alpha-numeric with periods, underscores, spaces and dashes 
    */ 
    function alpha_extra($str) { 
     $this->CI->form_validation->set_message('alpha_extra', 'The %s may only contain alpha-numeric characters, spaces, periods, underscores & dashes.'); 
     return (! preg_match("/^([\.\s-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE; 
    } 

    /** 
    * MY_Form_validation::numeric_comma() 
    * @abstract Numeric and commas characters 
    */ 
    function numeric_comma($str) { 
     $this->CI->form_validation->set_message('numeric_comma', 'The %s may only contain numeric & comma characters.'); 
     return (! preg_match("/^(\d+,)*\d+$/", $str)) ? FALSE : TRUE; 
    } 

    /** 
    * MY_Form_validation::matches_pattern() 
    * @abstract Ensures a string matches a basic pattern 
    */ 
    function matches_pattern($str, $pattern) { 
     if (preg_match('/^' . $pattern . '$/', $str)) return TRUE; 
     $this->CI->form_validation->set_message('matches_pattern', 'The %s field does not match the required pattern.'); 
     return FALSE; 
    } 

} 

/* End of file MY_form_validation.php */ 
/* Location: ./{APPLICATION}/libraries/MY_form_validation.php */ 
0

システムを見てみましょう/言語/英語/ form_validation_lang.php

私はあなたがどちらかそれを編集することができます信じている、またはアプリケーションにコピー/言語/英語/ form_validation_lang.php

+0

拡張は適切ですが、 'system /'はno-noです) – sekati

+0

同じファイルのコピーを 'application/language/english/form_validation_lang.php'(Applicatoin's Languageフォルダ)に置いて、欲しいです – masterFly

-8

ASPxClientEdit.ValidateGroup(null); 

または

:JavaScriptを使用して、ページにDevExpress社のコントロールを検証するためには、次のコードを使用します
ASPxClientEdit.ValidateGroup('validationgroup'); 
2

エラーを個別に表示するには <?php echo form_error('field name', '<div class="error">', '</div>'); ?> を使用できます。

Documentation

2

あなたはCodeIgniterのset_error_delimiters機能を使用して<li><div>から区切り文字を変更することができます。

$this->form_validation->set_error_delimiters('<li>', '</li>'); 

あなたはすぐにフォーム検証クラスをロードした後、これを行う必要があります。

これにより、方法が変更されますvalidation_errors()form_error('field_name')が表示されます。だから、次のようにulまたはolを追加する必要があります。

echo '<ul>' . validation_errors() . '</ul>'; 
1

上記の回答と同じで、ブートストラップで欲しいだけの場合:

<ul> 
<?php echo validation_errors('<li><span class="label label-danger">', '</span></li>'); ?> 
</ul>