Codeigniter:如何使用表单验证正确重定向

luc*_*axi 5 codeigniter

我理解如何使用没有现有值的简单形式来做,但是假设我有一个可以通过http://domain.com/account/settings调用的视图.假设我有两个字段,用户名,密码和城市,都是从数据库中提取的(当然除了密码).因此,如果用户尝试提交表单并因任何原因未通过验证,我应该将它们"重定向"到哪里?现在,我让它显示相同的视图,但问题是,它再次从数据库中提取信息.我应该创建两个不同的视图吗?

第二个视图基本上会显示他们尝试输入错误消息的信息.

Cin*_*mon 4

您不需要两个单独的视图。查看表单助手的功能set_value()set_select()set_checkbox()set_radio()这些在提交和验证后重新填充表单。因此,在您的情况下,您应该这样指定字段:

<input type="text"
       name="username"
       value="<?php echo set_value('username', $user['username']); ?>" />
<input type="text"
       name="city"
       value="<?php echo set_value('city', $user['city']); ?>" />
Run Code Online (Sandbox Code Playgroud)

默认情况下,输入将具有$user['city']值。但验证失败后,它将用之前输入的值(包括不正确的值)重新填充。

请记住,您想要重新填充的所有字段都需要通过form_validation库传递:

$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('city', 'City', '');
Run Code Online (Sandbox Code Playgroud)