在codeigniter中编辑记录中加载视图

时间:2011-06-18 07:43:46

标签: php codeigniter frameworks views codeigniter-url

您好我是codeigniter的新手。我正在通过开发测试应用程序来学习这个框架。我正在显示用户列表,并在每个记录前面有一个锚标记来编辑该记录。该锚标记看起来像

echo(anchor('first/edit_user/'.$value->id,'Edit'));

它将浏览器重定向到第一个控制器和edit_user函数。在edit_user函数中,我像这样加载编辑视图。

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

它加载关于所选记录的视图以编辑记录,并且网址看起来像

http://localhost/CodeIgniter/index.php/first/edit_user/9 

每件事都很好。但是当用户点击更新按钮时,它再次出现相同的功能。它更新记录,然后再次尝试加载相同的视图,但这里出现问题。现在更新记录后,它加载视图,网址就像这样

http://localhost/CodeIgniter/index.php/first/edit_user

由于没有所选记录的ID,因此会产生错误。如果我像这样更改我的函数的加载视图代码

          $this->load->view('edit_user/'$this->uri->segment(3)),$data);

它生成了一个错误的edit_user / .php没有定义,有些类似的东西。现在我想问一下如何将用户重定向到相同的编辑表单,告诉他的记录已更新?如何加载视图 从控制器的功能中选择记录?

2 个答案:

答案 0 :(得分:2)

要重定向到与当前网址相同的网址:

redirect(current_url());

否则,请具体指定您要重定向的位置。

  

$这 - >负载>查看( 'edit_user /' $这 - > URI->链段(3)),$数据);

     

它生成了一个错误的edit_user / .php没有定义,有些类似的东西。

不使用特定的URL段,而是使用传递给控制器​​的参数并设置默认值,以及处理传递的参数(url段)可能缺失或无效。例如:

function edit_user($id = NULL)
{
    if ( ! $id) // handle error (redirect with message probably)

    $user = $this->user_model->get($id);

    if ( ! $user) // User not found, handle the error

    // If user found, load the view and data

}

请记住,控制器仍然只是php类和函数,并接受用户输入(我可以在地址栏中输入任何内容) - 所以永远不要假设URL中的内容,如果您需要的数据不是那里。

答案 1 :(得分:2)

首先加载URL帮助程序“config / autoload.php”

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['helper'] = array('url', 'file');
*/

$autoload['helper'] = array('url');

或者在函数本身中加载URL帮助程序

public function edit_user($user_id = '')
{
    if(!is_numeric($user_id) {
        // user id is not here redirect somewhere //
        redirect('home/index');
    }

    if(isset($_POST['submit'])) {
        // proceed to model // @param is optional // you can pass hidden field from form also //
        $this->user_model->edit_user($user_id)
    }

    $this->load->helper('url');
    $this->load->view('first/edit_user', $data);
}

现在转到你的表格:

<form method="post" action="<?php echo current_url(); ?>">

</form>

这也将在提交后返回到相同的编辑页面。

希望这可以帮助你,让我们知道那里有什么...谢谢!!