Codeigniter表单验证将不会运行

时间:2015-03-19 06:27:48

标签: php forms codeigniter validation

似乎有关于表单和表单验证的问题。

我在让表单验证工作时遇到了问题。我创建了一个注册表单,要求用户提供各种信息。然后我创建了一个表单,允许用户编辑他的信息。表单验证在注册表单上完美运行,但我不能让它在另一个表单上运行验证。

我的观点

<h1>Edit user</h1>

<div id="body">
        <p>Edit user information.</p>

    <?php 



    echo form_open('user_admin/user_update');

    echo validation_errors();

    echo form_hidden('id', $results->id);

    echo "<p><lable>Email:</lable>";
    echo form_input('email', $results->email);
    echo "</p>";


    echo "<p><lable>Name:</lable>";
    echo form_input('name', $results->name);
    echo "</p>";

    echo "<p><lable>Last name:</lable>";
    echo form_input('lastname', $results->lastname);
    echo "</p>";

    echo "<p><lable>Home address:</lable>";
    echo form_textarea('homeaddress', $results->homeaddress);
    echo "</p>";

    echo "<p><lable>Postal address:</lable>";
    echo form_textarea('posteladdress', $results->posteladdress);
    echo "</p>";

    echo "<p><lable>Mobile number:</lable>";
    echo form_input('mobile', $results->mobile);
    echo "</p>";

    echo "<p><lable>Home telephone:</lable>";
    echo form_input('hometel', $results->hometel);
    echo "</p>";

    echo "<p><lable>ID number:</lable>";
    echo form_input('idnum', $results->idnum);
    echo "</p>";

    echo "<p>";
    echo form_submit('edit_submit', 'Update');
    echo "</p>";

    echo form_close();

    ?> 

我的控制器

 public function user_update()
{
    $this->load->library('form_validation');
    $this->load->model('model_users');

    $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email|is_unique[user.email]');
    $this->form_validation->set_rules('name', 'Name', 'required|trim');
    $this->form_validation->set_rules('lastname', 'Last name', 'required|trim');
    $this->form_validation->set_rules('homeaddress', 'Home address', 'required|trim');
    $this->form_validation->set_rules('posteladdress', 'Postel address', 'required|trim');
    $this->form_validation->set_rules('mobile', 'Mobile number', 'required|trim');
    $this->form_validation->set_rules('hometel', 'Home telphone', 'required|trim');
    $this->form_validation->set_rules('idnum', 'ID Number', 'required');


    $this->form_validation->set_message('is_unique', 'This email address has already been registered. Please try again.');

    if ($this->form_validation->run()==true)
    {

        $id = $this->input->post('id');
        $this->model_users->update_info();
        echo "The users details have been updated successfully";
        redirect ('user_admin/user_main');
    }
    else
    {
        echo "The users details were not updated. Please contact the admistrator!";


    }


}

在控制器处于当前配置的情况下,我可以通过将if语句更改为FALSE来更新数据库。所以我现在将帖子信息传递给数据库并进行更新。

请有人看看我的代码,告诉我我做错了什么。

感谢。

1 个答案:

答案 0 :(得分:0)

尝试从代码中取出这一行,然后重试。

$this->form_validation->set_message('is_unique', 'This email address has already been registered. Please try again.');

我认为这一行应该进入你自己的验证功能。如果它确实有效,那么只需在codeigniter站点上阅读自定义表单验证功能。

如果您使用的是HMVC,那么在验证过程中可能会导致自定义函数出现问题,但有很简单的方法可以解决问题,但您必须向Google提供确切答案。