在CodeIgniter中验证表单后未设置参数

时间:2011-12-02 00:31:42

标签: php codeigniter

我通过网址传递变量$id,并以表单形式加载数据,但是当我要验证表单时,无法识别值$id

function myfunction() {
    $id = $this->uri->segment(4); 
    echo $id;   //yes, print the value  

    $data_user = $this->admin_model->query_data_user($id);
    $direccion = $data_user[0]->address;
    $phone = $data_user[0]->phone;

    $this->data['address'] = array(
            'name' => 'address',
            'id' => 'address',
            'value' => $address,
            'class' => 'input',
    );

    $this->data['phone'] = array(
            'name' => 'phone',
            'id' => 'phone',
            'value' => $phone,
            'class' => 'input',
    );

    echo $id;  //yes, print the value

    $this->form_validation->set_rules('address', 'Address', 'xss_clean|max_length[100]');
    $this->form_validation->set_rules('phone', 'Phone', 'required|xss_clean|max_length[20]|is_natural_no_zero');

    if ($this->form_validation->run() == true) {
        echo $id;  //here NOT PRINT $id
        $data = array(
                'address' => $this->input->post('address'),
                'phone' => $this->input->post('phone'),
        );

        $id = $this->uri->segment(4); 
        echo $id;  //here not print the value $id

        $this->ion_auth->update_user($id, $data); 
        $this->load->view('includes/template_mensajes', $data);
    }
    $this->load->view('users/update_user', $this->data);
}

在验证我的表单时,无法识别值$id,我的错误是什么?

4 个答案:

答案 0 :(得分:6)

你在哪里提交表格。您确定要在表单的操作属性的URI中传递ID。

例如,您的表单打开标记应该类似于

<form action="/admin/myfunction/<?= $id ?>">

或使用codeigniter助手

echo form_open('admin/myfunction/' . $id);

答案 1 :(得分:1)

如果我没有弄错,我的功能是你的控制器中的一个动作叫做“mycontroller”让我们说。然后你应该发送这个网址:http://localhost/mycontroller/myfunction/1234

并将您的操作更新为接受ID参数$ id。 CodeIgniter将负责其余部分。

function myfunction($id) {
...
}

答案 2 :(得分:0)

您需要将表单中的$ id变量作为隐藏字段传递给POST值。

答案 3 :(得分:0)

将我的ID添加到我的网址末尾后,例如www.whsconcepts.com/?id=100, 我把它叫回我的表格里面。例如:

form_open('the url I want' . $_Get ['id'])