2012-01-23 4 views
3

CodeIgniterのフォーム検証を使用する場合、エラーがある場合はそれを出力するためのform_error()関数があり、存在しない場合は空のhtmlタグがあることがわかります。特定のフィールドにエラーがあるかどうかを判断するブールテストを行う簡単な方法はありますか?私は、エラーを出力するのではなく、入力要素自体のクラスを変更したいと思います。これを達成する最良の方法は何ですか?codeigniter:フォーム検証エラーが発生した場合、htmlクラスを変更しますか?

答えて

4

私はこれをテストできる場所ではありませんが、これは動作しませんか?

<?php 
if (!empty(form_error('username'))) 
{ 
    $class = "error"; 
} 
else 
{ 
    $class = "valid"; 
} 
?> 

<input type="text" name="username" class="<?= $class ?>" value="<?= set_value('username') ?>" /> 
+0

カスタムフォームライブラリを書き直しているのと同様の問題に直面していました。フォーム検証クラスの '_error_array'にアクセスする方法はありません。ちょっと面倒です。文字列を出力するこれらの関数の1つを使用する必要があります。 'error_delmiters'を空白(' validation_errors() 'でエラーの間にCIハードコード' \ n ')に設定した後、 'explode(" \ n "、validation_errors())で自分の配列を作成しなければなりませんでした。どのフィールドにエラーがあっても、メッセージだけが含まれています。たとえそれがちょうどエレガントではないとしても、私はあなたがこれのような何かをしなければならないと思うと言っています。 –

1

これが私の作品

空がエラーをスローした場合、この作業の理由
<?php 
if(form_error('field_name') != '') 
{ 
    $class = 'error'; 
} 

わからない!書き込みコンテキストで関数の戻り値を使用することはできません。

1

私は他のオプションは、スタイル、親要素とすることができる

<div class="control-group <?php if (form_error('group')!="") echo "error"; ?>"> 
+2

少し短く: '<?= form_error( 'group')? 'error': ''?> ' – Justin

0

この方法でそれを使用しています。

は、私はここでTwitterのブートストラップを使用し、エラー要素がpタグに示されているCSS

> .controls p { color : red; } 

に私はちょうどこれを追加のエラーのスタイルを設定するためのコード

<div class="controls"> 
    <input type="text" name="dob" id="dob"> 
    <?php echo form_error('dob'); ?> 
</div> 

です。 希望があれば幸いです。