我试图从我的会话中发布的标题数据中发布一个值。其他输入字段正在工作,除了select,单选按钮,复选框功能没有显示值。
控制器
function index(){
$data = $this->get_data_from_session();
$this->load->view('edit_profile', $data);
}
function get_data_from_post(){
$data['title'] = $this->input->post('title', TRUE);
$data['firstname'] = ucwords(strtolower($this->input->post('firstname', TRUE)));
return $data;
}
function get_data_from_session(){
$data['title'] = $this->session->userdata('title');
$data['firstname'] = $this->session->userdata('firstname');
return $data;
}
function update(){
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('firstname', 'First Name', 'trim|required|min_length[2]|xss_clean');
if ($this->form_validation->run($this) == FALSE){
$data = $this->get_data_from_post();
$this->load->view('edit_profile',$data);
}else{
//update db
}
}
查看文件(edit_profile.php)
<?php echo form_open('update'); ?>
<select name="title" class="form-control">
<option value="" <?php echo set_select('title', ''); ?> >Title</option>
<option value="Dr" <?php echo set_select('title', 'Dr'); ?> >Dr</option>
<option value="Mr" <?php echo set_select('title', 'Mr'); ?> >Mr</option>
<option value="Mrs" <?php echo set_select('title', 'Mrs'); ?> >Mrs</option>
<option value="Ms" <?php echo set_select('title', 'Ms'); ?> >Ms</option>
</select>
<input type="text" class="form-control" id="fname" placeholder="* First Name" name="firstname" value="<?php echo $firstname; ?>" autofocus autocomplete="off">
<button type="submit" class="btn btn-primary">UPDATE INFORMATION</button>
<?php echo form_close(); ?>
firstname显示值,但标题不显示。 任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
if ( ! function_exists('set_select'))
{
function set_select($field = '', $value = '', $default = FALSE)
{
$OBJ =& _get_validation_object();
if ($OBJ === FALSE)
{
if ( ! isset($_POST[$field]))
{
if (count($_POST) === 0 AND $default == TRUE)
{
return ' selected="selected"';
}
return '';
}
$field = $_POST[$field];
if (is_array($field))
{
if ( ! in_array($value, $field))
{
return '';
}
}
else
{
if (($field == '' OR $value == '') OR ($field != $value))
{
return '';
}
}
return ' selected="selected"';
}
return $OBJ->set_select($field, $value, $default);
}
}
这是CI set_select函数,它希望$ field提供post方法。在这里你不是,你是通过会议提供的。
答案 1 :(得分:0)
第一个名称显示您正在使用value="<?php echo $firstname; ?>"
而不是value="<?php echo set_value('firstname'); ?>"
。输入字段的.Set_value直接来自post,相当于set_select(select字段)。现在检查firstname是否使用set_value()。
答案 2 :(得分:0)
问题解决了:) 我只是包含一些代码
<option value="Mr" <?php echo set_select('title', 'Mr', ($title == 'Mr')); ?> >Mr</option>
<option value="Mrs" <?php echo set_select('title', 'Mrs', ($title == 'Mrs')); ?> >Mrs</option>
这是我在set_select中包含的内容,它也适用于单选按钮。
, ($title == 'Mr')
答案 3 :(得分:0)
或者你也可以这样做。(因为你正在回应上面第一个名字的变量)
<?php echo form_open('update'); ?>
<select name="title" class="form-control">
<option value="" <?php echo $title=='' ? 'selected="selected"' : '';?> >Title</option>
<option value="Dr" <?php echo $title=='Dr' ? 'selected="selected"' : '';?> >Dr</option>
<option value="Mr" <?php echo $title=='Mr' ? 'selected="selected"' : '';?> >Mr</option>
<option value="Mrs" <?php echo $title=='Mrs' ? 'selected="selected"' : '';?> >Mrs</option>
<option value="Ms" <?php echo $title=='Ms' ? 'selected="selected"' : '';?> >Ms</option>
</select>
<input type="text" class="form-control" id="fname" placeholder="* First Name" name="firstname" value="<?php echo $firstname; ?>" autofocus autocomplete="off">
<button type="submit" class="btn btn-primary">UPDATE INFORMATION</button>
<?php echo form_close(); ?>