我有一个下拉字段在我的形式,当我点击提交的形式经过验证,如果错误发生,返回所有的值。 这项工作预计于我的下拉MEU,我在下拉列表中SET_VALUE但它不工作:(
这里是我的代码
<?php echo form_dropdown('gender', $gender, set_value('gender')); ?>
我在做什么错误或丢失?
我有一个下拉字段在我的形式,当我点击提交的形式经过验证,如果错误发生,返回所有的值。 这项工作预计于我的下拉MEU,我在下拉列表中SET_VALUE但它不工作:(
这里是我的代码
<?php echo form_dropdown('gender', $gender, set_value('gender')); ?>
我在做什么错误或丢失?
这样做效果很好:
<?php
$selected = ($this->input->post('gender')) ? $this->input->post('gender') : 'M';
$gender = array("M" => "Male", "F" => "Female");
echo form_dropdown('gender', $gender, $selected);
?>
卸下set_value('gender')
如:
<?php echo form_dropdown('gender', $gender, 'male'); ?>
由于忠是提你可以传递一个数组作为多选第3个参数。
如果你想使用SET_VALUE特定领域,你需要有该字段的验证规则。 没有验证规则使得SET_VALUE返回NULL(或空字符串我没有检查它)
在我的控制,我添加
$this->form_validation->set_rules('gender','Gender','required');
之前我form_validation->运行线。 然后,我可以用你的语法:
<?php echo form_dropdown('gender', $gender, set_value('gender')); ?>
我发现SET_VALUE()的工作,不set_select()。 记住,你可以添加第二个参数来SET_VALUE有如果表单尚未验证其用于男性或女性的默认。 我提取我的后台数据库现有的值,并通过这这样:
<?php echo form_dropdown('gender', $gender, set_value('gender',$persons_gender_from_db)); ?>
还要注意的是设定值返回的选项(“M”或“F”),而不是所显示的值(“男”或“女”)的阵列的索引。 对于包含两种性别,我使用含有选项的数据库表的主键更多的选择列表,以确保其唯一性。
虽然我不知道当我将首先被要求“其他”增加的性别选项列表....
随着form_dropdown
,你必须使用set_select
代替set_value
CodeIgniter的文件
如果你想设置的默认值form_dropdown
,通过其中包含的默认值作为第三个参数数组form_dropdown
功能。
CI有set_checkbox()
和set_radio()
您需要使用代替的set_value()
但set_checkbox
和set_radio
有一些问题,并且似乎没有能够处理被设计为同时处理创建和更新表单形式。
这是该修补程序。 你可以把这个代码在助手或延长form_validation类。
<?php echo form_dropdown('gender', $gender, set_it('gender','M',$person)); ?>
<?php
/* $field is the field you're setting
* $value is the "selected" value from the previous form post
* $defaults is an object containing defaults in case the form is being used to create a new record. It could be filled with null values, or actual default values if you need that.
*/
function set_it($field, $value, $defaults = null)
{
// first, check to see if the form element was POSTed
if (isset($_POST[$field]))
{
// does it match the value we provided?
if ($_POST[$field] == $value)
{
// yes, so set the checkbox
echo "checked='checked'"; // valid for both checkboxes and radio buttons
}
}
// There was no POST, so check to see if the provided defaults contains our field
elseif ( ! is_null($defaults) && isset($defaults->$field))
{
// does it match the value we provided?
if ($defaults->$field == $value)
{
// yes, so set the checkbox
echo "checked='checked'"; // valid for both checkboxes and radio buttons
}
}
}
?>
也许你不验证表单。
用这个:
$this-> form_validation-> set_rules ('gender', 'Label', 'xss_clean');
使用方法:
<? php echo form_dropdown ('gender', $ gender, set_value ('gender'));?>
如果不是,请使用表单验证,操作步骤如下:
<? php echo form_dropdown ('gender', $ gender, $ this-> input-> post ('gender'));?>