我知道如果它是一个输入控件,如何设置插入值。
示例:
<input type="text" name="fullname" value="<?php echo isset($_SESSION['regData']['fullname']) ? set_value('fullname', $_SESSION['regData']['fullname']) : set_value('fullname'); ?>">
此代码仍会在提交按钮后显示您插入的值。但是我应该如何将其应用于dropdown
控件?
我试图这样做,但它不起作用:
<select name="gender" class="form-control">
<?php
if(!empty($genders)){
foreach ($genders as $row) {
echo '<option value="'.$row['id'].'"';
if($row['id'] == $_SESSION['regData']['gender']){
echo set_select('gender', $_SESSION['regData']['gender']);
} else {
echo set_select('gender', $row['id']);
}
echo '>'.$row['gender_title'].'</option>';
}
}
?>
</select>
应用它的正确方法是什么?谢谢。
答案 0 :(得分:0)
set_select
检查$_POST
数组中的输入值。
为了使用会话存储,您可以在application/helpers
目录中编写以下帮助程序。
<强> form_extras.php 强>
if ( ! function_exists('set_select_session'))
{
function set_select_session($field, $sessionKeyPath, $value = '', $default = FALSE)
{
$CI =& get_instance();
$sessionPart = $CI->session->userdata();
foreach($sessionKeyPath as $key) {
$sessionPart = $sessionPart[$key];
}
if ($sessionPart[$field] == $value) {
return 'selected';
}
return set_select($field, $value, $default);
}
}
加载
$this->load->helper('form_extras');
然后在您的视图中使用它。
<select name="gender" class="form-control">
<?php
if(!empty($genders)){
foreach ($genders as $row) {
echo '<option value="'.$row['id'].'"';
echo set_select_session('gender', ['regData'], $row['id']);
echo '>'.$row['gender_title'].'</option>';
}
}
?>
</select>
否则,直接在视图中执行就可以了。
if(!empty($genders)){
foreach ($genders as $row) {
echo '<option value="'.$row['id'].'"';
if($row['id'] == $_SESSION['regData']['gender']){
echo 'selected';
} else {
echo set_select('gender', $row['id']);
}
echo '>'.$row['gender_title'].'</option>';
}
}
?>
答案 1 :(得分:0)
我找到了一个诀窍。如果form_validation->run()
失败,我从控制器设置了一个变量到性别。
if($this->form_validation->run() == TRUE){
// Other statement goes here
} else {
$this->data['gender'] = TRUE;
}
在我看来,我这样做:
<select name="gender" class="form-control">
<?php
if(!empty($genders)){
foreach ($genders as $row) {
echo '<option value="'.$row['id'].'"';
if(isset($gender)){
echo set_select('gender', $row['id']);
} else {
if(isset($_SESSION['regData']['gender']) && $_SESSION['regData']['gender'] == $row['id']){
echo 'selected';
}
}
echo '>'.$row['gender_title'].'</option>';
}
}
?>
</select>
因此,当提交表单并抛出错误,而不是读取会话的值时,它将根据用户选择读取值。