【发布时间】:2012-02-04 12:52:41
【问题描述】:
我的控制器中加载了 form_validation 库,并且表单验证本身正在工作,但是当使用 set_value() 时,它不会填充表单字段。这是控制器中的代码:
function addUser()
{
$this->form_validation->set_rules('firstName', 'firstname', 'trim|required|max_length[30]');
$this->form_validation->set_rules('surname', 'surname', 'trim|required|max_length[30]');
$this->form_validation->set_rules('emailAddress', 'email address', 'trim|required|valid_email|is_unique[users.email]|max_length[255]');
$this->form_validation->set_rules('password', 'password', 'trim|required|max_length[20]|min_length[5]');
$this->form_validation->set_rules('passwordVerify', 'password verification', 'trim|required|max_length[20]|min_length[5]');
if($this->form_validation->run() === FALSE) {
$this->session->set_flashdata('formValidationError', validation_errors('<p class="error">', '</p>'));
redirect('/member/register');
} else {
echo 'Passed';
}
}
这是视图中的代码:
<?php echo $this->session->flashdata('formValidationError'); ?>
<form method="POST" action="<?php echo site_url('member/addUser'); ?>">
<fieldset>
<legend>Create a FREE account</legend>
<div>
<label for="firstName">Firstname</label>
<input type="text" name="firstName" value="<?php echo set_value('firstName'); ?>" maxlength="30">
</div>
<div>
<label for="surname">Surname</label>
<input type="text" name="surname" value="<?php echo set_value('surname'); ?>" maxlength="30">
</div>
<div>
<label for="emailAddress">Email Address</label>
<input type="text" name="emailAddress" value="<?php echo set_value('emailAddress'); ?>" maxlength="255">
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password" maxlength="20">
</div>
<div>
<label for="passwordVerify">Verify Password</label>
<input type="password" name="passwordVerify" maxlength="20">
</div>
<button type="submit">Register</button>
</fieldset>
</form>
我有什么遗漏吗?重定向是否导致问题?
【问题讨论】:
-
怎么不工作了?它应该在验证失败后重新填写字段。如果表格未有效填写,为什么要重定向到另一个页面?如果我错过了一个领域,我需要重新注册吗? :)
-
@DamienPirsy 表单字段未填充。如果用户错过了某个字段,他们将被重定向回注册页面。我重定向的原因是因为我不希望用户在地址栏中看到 /register/addUser url(如果我加载视图而不是重定向会发生这种情况)。
标签: php codeigniter