Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CodeIgniter中验证失败后重置下拉值_Codeigniter_Validation_Codeigniter 2 - Fatal编程技术网

在CodeIgniter中验证失败后重置下拉值

在CodeIgniter中验证失败后重置下拉值,codeigniter,validation,codeigniter-2,Codeigniter,Validation,Codeigniter 2,我有一个非常简单的投票表格。它包含条目ID的单个文本字段,然后是五个下拉列表。唯一要做的验证是在文本字段上,但如果失败,我希望所有下拉列表都保留它们的值 例如,用户输入12345作为条目,然后从所有五个下拉列表中选择选项a。选项B是默认选项。如果12345验证失败,则在显示验证错误时,下拉列表仍应设置为选项A。那是不会发生的。我正在使用form helper的form_下拉列表创建下拉列表。有什么想法吗?如您所见,我尝试在名为q1的下拉列表中使用set_值,但它不起作用。验证本身确实有效 以下是

我有一个非常简单的投票表格。它包含条目ID的单个文本字段,然后是五个下拉列表。唯一要做的验证是在文本字段上,但如果失败,我希望所有下拉列表都保留它们的值

例如,用户输入12345作为条目,然后从所有五个下拉列表中选择选项a。选项B是默认选项。如果12345验证失败,则在显示验证错误时,下拉列表仍应设置为选项A。那是不会发生的。我正在使用form helper的form_下拉列表创建下拉列表。有什么想法吗?如您所见,我尝试在名为q1的下拉列表中使用set_值,但它不起作用。验证本身确实有效

以下是表单的代码:

<?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_下拉函数,那么如何将实际选择的值传递到set_select的第二个参数中呢?根据set_select文档

第一个参数必须包含选择菜单的名称 第二个参数必须包含每个项的值

还有一条评论说使用set_value-echo form_下拉列表'events',$options,set_value'events',$firstItem;。该评论获得了三票,所以我假设它对某些人有效,但对我没有任何作用。这个问题已经有一年了;也许这在旧版本的CI中有效,但在最新版本中无效。在任何情况下,在使用form_dropdown创建下拉列表时,都必须有一种方法使下拉列表值具有粘性,不是吗?我无法想象,我必须走很长的路,通过循环一个值数组并分别回显每个选项行来创建下拉列表;这种做法一开始就违背了使用CI之类的东西的目的。

请记住,set_value需要第二个参数,即每个项目的值,因此可以通过添加$this->input->post'q1'作为第二个参数来实现

而不是:

<?php echo form_dropdown('q1', $score_options, set_value('q1')); ?>
你会写:

<?php echo form_dropdown('q1', $score_options, set_value('q1', $this->input->post('q1'))); ?>
希望能有所帮助。

记住,set_value需要第二个参数,即每个项目的值,因此您可以通过添加$this->input->post'q1'作为第二个参数来实现这一点

而不是:

<?php echo form_dropdown('q1', $score_options, set_value('q1')); ?>
你会写:

<?php echo form_dropdown('q1', $score_options, set_value('q1', $this->input->post('q1'))); ?>
希望有帮助。

容易多了

   <select name="add_fields_type" id="add_fields_type">
     <option value="">Please Select</option>
     <option value="Input">Input</option>
     <option value="Text Area">Text Area</option>
     <option value="Radio Button">Radio Button</option>
     <option value="Check Box">Check Box</option>
   </select>


     <script>
      document.getElementById('select_status').value="<?php echo set_value('status'); ?>";
     </script>
容易多了

   <select name="add_fields_type" id="add_fields_type">
     <option value="">Please Select</option>
     <option value="Input">Input</option>
     <option value="Text Area">Text Area</option>
     <option value="Radio Button">Radio Button</option>
     <option value="Check Box">Check Box</option>
   </select>


     <script>
      document.getElementById('select_status').value="<?php echo set_value('status'); ?>";
     </script>

非常感谢。我想知道,当传入的数组只有'value'=>set\u value'entry\u code'而没有第二个参数$this->input->post'entry\u code'时,为什么entry\u code字段会保存它的值。谢谢!我想知道,当传入的数组只有'value'=>set\u value'entry\u code'而没有第二个参数$this->input->post'entry\u code'时,为什么entry\u code字段会保存它的值。