2011-07-13 10 views
1

私は非常に簡単な投票フォームを持っています。これには、項目IDのための単一のテキスト・フィールド、次に5つのドロップダウン・フィールドが含まれています。唯一の検証はテキストフィールドで行われますが、失敗した場合はすべてのドロップダウンで値を保持します。CodeIgniterで検証が失敗した後にドロップダウン値をリセットする

たとえば、ユーザーはエントリとして12345を入力し、5つのドロップダウンすべてからオプションAを選択します。 (オプションBはデフォルトです。)12345が検証に失敗した場合、検証エラーが表示されたときにドロップダウンは引き続きオプションAに設定されます。それは起こっていない。フォームヘルパーのform_dropdownを使用してドロップダウンを作成しています。何か案は?ご覧のとおり、q1というドロップダウンでset_valueを使ってみましたが、うまくいきません。検証自体は機能します。ここで

は、フォームのコードです:

<?php 
$hidden = array('dot_judge_id' => $this->session->userdata('dot_judge_id')); 

echo form_open('vote/create'); 
$entry_code_data = array(
    'name' => 'entry_code', 
    'id' => 'entry_code', 
    'value' => set_value('entry_code') 
); 

echo form_hidden($hidden); 

$score_options = array('1'=>'1 (lowest)', '2'=>'2','3'=>'3', '4'=>'4','5'=>'5 (highest)'); 
?> 

<p><label for="entry_code">Entry code: </label><?php echo form_input($entry_code_data); ?></p> 
<p><label for="q1">Question 1: </label><?php echo form_dropdown('q1', $score_options, set_value('q1')); ?></p> 
<p><label for="q2">Question 2: </label><?php echo form_dropdown('q2', $score_options, ''); ?></p> 
<p><label for="q3">Question 3: </label><?php echo form_dropdown('q3', $score_options, ''); ?></p> 
<p><label for="q4">Question 4: </label><?php echo form_dropdown('q4', $score_options, ''); ?></p> 
<p><label for="q5">Question 5: </label><?php echo form_dropdown('q5', $score_options, ''); ?></p> 

<p><?php echo form_submit('submit', 'Submit vote'); ?></p>     

<?php echo form_close(); ?> 
<?php echo validation_errors('<p class="error">', '</p>');?> 

私は書いていないよので、CodeIgniterのフォーラムで誰かがset_selectを使用するように私に言うが、私は、私はset_selectを使用することができるとは思わない持っていました選択ボックスの個々の値を取り出したり、ハードコードされたデフォルト値を提供しようとしていません。フォームの検証を実行する前に、ユーザーが選択した値にドロップダウンをリセットする必要があります。私は、form_dropdown関数を使用しているので、実際に選択した値をset_selectの2番目のパラメータに渡すにはどうすればよいですか? set_selectのドキュメントによると、

最初のパラメータは選択メニューの名前が含まれている必要があり、 2番目のパラメータは、各項目の値が含まれている必要があり

this postにコメントがありましたそれはset_value - echo form_dropdown('events', $options, set_value('events'), $firstItem);を使うと言っています。コメントは3票を得たので、私はそれが一部の人々のために働くと仮定していますが、私にとっては何もしません。その質問は一歳だった。おそらくそれはCIの古いバージョンでは動作しましたが、最新バージョンでは動作しませんでした。いずれにせよ、form_dropdownを使用してドロップダウンを作成するときに、「粘着性のある」ドロップダウン値を持つ方法が必要ですか?私は長い道のりで行なわなければならず、値の配列をループし、各オプション行を別々にエコーすることによってドロップダウンを作成しなければならないと想像することはできません。最初はCIのようなものを使う目的を打ちのめすのです。

答えて

4

set_value()には、各項目の値である2番目のパラメータが必要であることを覚えておいてください。$this->input->post('q1')を2番目のパラメータとして追加することで、これを実現できます。

の代わりに:

あなたが書くでしょう
<?php echo form_dropdown('q1', $score_options, set_value('q1')); ?> 

<?php echo form_dropdown('q1', $score_options, set_value('q1', $this->input->post('q1'))); ?> 

お役に立てば幸いです。

+0

ありがとうございました!私はなぜ、entry_codeフィールドが値が保存されるのだろうと思っていますが、配列に渡された配列が '$ this-> input-> post( ')の2番目のパラメータを持たない' value '=> set_value(' entry_code ' entry_code ') '。 – EmmyS

関連する問題