具有动态参数的codeigniter视图

时间:2010-11-05 15:15:59

标签: codeigniter

我有一个编辑视图,其网址为/ group / edit / 1,其中1是动态的组ID。

我正在将控制器中的表单数据验证为:

if ($this->form_validation->run() == FALSE)
{
    $this->load->view('group/edit', $data);
}

如何将id参数“1”传递给此视图?

以下选项不起作用,因为网址必须是group / edit / 1

$this->load->view('edit', $data);

3 个答案:

答案 0 :(得分:2)

你在考虑这个错误。您希望拥有一个名为edit.php的视图并将数字1传递给它,或者更多的是,您希望从模型中获取1的数据并将模型的返回值传递到视图中。考虑一下:

<强>控制器

function edit($id)
{
    $data['item_info'] = $this->whateverModel->getItem($id);
    $this->load->view('edit', $data);
}

然后在编辑视图中,您可以参考如下数据:

查看

echo $item_info['id'];
echo $item_info['name']; //or whatever you pass back from the model

答案 1 :(得分:0)

这是你的意思吗?

$this->load->view('group/edit/'.$parameter, $data);

这样可以加载1,因为您只是定义了VIEW文档的路径

根据CodeIgniters参考,这是格式: $this->load->view('folder_name/file_name');

http://codeigniter.com/user_guide/general/views.html

不确定您是否对路由与视图感到困惑,这是一个快速的区别:

如果你想要http://www.example/group/edit/10 那么你需要一个路线设置,而不是一个视图。

如果您需要http://www.example/并显示页面main.php(在您的views文件夹中)中的内容,那么您可以在主控制器中执行$this->load->view('main');

答案 2 :(得分:0)

这就是我在做的事情。这可以接受吗?

控制器操作:

function edit($id)
{
$group_q = $this->db->query("SELECT * FROM groups WHERE id = ?", array($id));
$group_data = $group_q->row();

    /* Form fields */
    $data['name'] = array(
        'name' => 'name',
        'id' => 'name',
        'value' => $group_data->name,
    );
    $options = array("A", "B", "C", "D");
    $data['group_parent'] = $options;
    $data['group_parent_status'] = $group_data->parent_id;
    $data['group_id'] = $id;

    /* Form validations */
    $this->form_validation->set_rules('name', 'Name', 'trim|required|min_length[2]');

    if ($this->form_validation->run() == FALSE)
    {
        if ($this->input->post('submit', TRUE))
        {
            $data['name']['value'] = $this->input->post('name', TRUE);
            $data['group_parent_status'] = $this->input->post('group_parent', TRUE);
        }
        $this->load->view('group/edit', $data);
    }
    else
    {
        $data_name = $this->input->post('name', TRUE);
        $data_parent_id = $this->input->post('group_parent', TRUE);
        $data_id = $id;

        if ( ! $this->db->query("UPDATE groups SET name = ?, parent_id = ? WHERE id = ?", array($data_name, $data_parent_id, $data_id)))
        {
            $this->session->set_flashdata('error', "Error");
            $this->load->view('group/edit', $data);
        } else {
            $this->session->set_flashdata('message', "Success");
            redirect('account');
        }
    }
    return;
}

查看文件:

<?php
echo form_open('group/edit/' . $group_id); /***** NOTE THIS STEP *****/
echo "<p>";
echo form_label('Name', 'name');
echo "<br />";
echo form_input($name);
echo "</p>";
echo "<p>";
echo form_label('Parentp', 'group_parent');
echo "<br />";
echo form_dropdown('group_parent', $group_parent_active);
echo "</p>";
echo form_hidden('group_id', $group_id);
echo form_submit('submit', 'Submit');
echo form_close();

&GT;