3

次のようなフォームを想像してください。

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?=set_value('email')?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>

間違ったメールを送信すると、CodeIgniter 関数は「フィールドが無効です」と書き込み、無効なフィールドに間違った値を入力します。

エラーメッセージは保持したいが、間違った値は保持したくない (空の値を好む)。しかし、正しい値の再入力機能も保持したいと思います。

ここに私が得るものがあります:

http://nsa21.casimages.com/img/2011/12/29//111229060041170572.jpg

ここに私が欲しいものがあります:

ここに画像の説明を入力

[編集]解決策が見つかりました (Herr Kaleun と Matt Moore に感謝)

メール フィールドの例:

<input type="text" name="email" id="email" value="<?=!form_error('email')?set_value('email'):''?>" />
4

2 に答える 2

2

フィールドを個別にチェックして、このようなロジックを持つことができます。

特定のフィールドのエラーが存在する場合は、その上にロジックを構築できます。

if ( form_error('email') != '' )
{
    $data['email_value'] = '';
}
else
{
    $data['email_value'] = set_value('email');
}

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?= $email_value; ?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>
于 2011-12-29T17:25:47.237 に答える
1

Form_error は、検証に基づいてフォーム値がエラーになったときに設定されます。set_value 関数の使用から判断すると、組み込みのフォーム検証を使用していると思います。そのフィールドのメッセージが設定されているかどうかを確認し、それif(form_error('fieldname') !=NULL)に基づいて値を設定できます。

フィールドごとにエラーメッセージを設定する必要があるかもしれませんが、とにかくそれを行う必要があります。これをカバーするガイドは次のとおりです。http://codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

<form action="test.php" method="post"> 
    <input type="text" name="firstname" value="<?if(form_error('firstname') != NULL){echo set_value('firstname');}?>" /> 
    <input type="text" name="lastname" value="<?if(form_error('lastname') != NULL){ echo set_value('lastname');}?>" /> 
    <input type="text" name="email" value="<?if(form_error('email') !=NULL){ echo set_value('email');}?>" /> 
    <input type="submit" name="submit_form" value="OK" /> 
</form> 

*このコードはテストされていないことに注意してください *

于 2011-12-29T18:31:19.233 に答える