编辑&在Codeigniter中更新

时间:2016-05-15 18:59:54

标签: codeigniter edit

在进行更新时,我收到以下错误

Severity: Notice Message: Undefined variable: user

这是我的控制者:

public function update_user_id($user_id) {

    if($this->input->post('submit')){
    $courses = array(

    'user_name'=>$this->input->post('user_name'),
    'email'=>$this->input->post('email')
    );
    $this->users_model->update_user($user_id,$users);
    $base_url=base_url();
    redirect("$base_url"."Dashboard/update_user_id/$user_id");
    }
    $result['user']=$this->users_model->user_id($user_id);
    $this->load->view('edit_user',$result);
    }

我的观点是什么

<?php echo form_open(base_url().'Admin/update_user_id/'.$user[0]->user_id);?>  
 User Name: <input type="text" name="user_name" value=" <?php echo $user[0]->user_name;  ?>">
 Email: <input type="text" name="email" value=" <?php echo $user[0]->user_name;  ?>">
 <?php echo form_close();?>

不知道代码有什么问题

1 个答案:

答案 0 :(得分:2)

始终关注documentation。根据CI理事会惯例,您的类名应遵循文件名。我想你有这个权利。但是你没有遵循对ucfirst()文件和类名的要求。

因此,在您的情况下,文件不应该命名为 CoursesModel ,这两个类都不应该命名为CoursesModel,但是您应该将文件和类命名为 Coursesmodel 。记住ucfirst()规则(关于CI3 +),用于命名所有类的控制器,模型或库。

此外,如果您加载这些文件(模型和库),则库始终使用strtolower()名称,而对于模型,您可以同时使用strtolower()ucfirst()格式化名称。

Personaly,我使​​用strtolower加载库,同时用于加载带有ucfirst名称的模型,这样我就可以快速查看代码。

尝试:

Courses_m.php (这样我加快了解析速度)

<?php defined('BASEPATH') or exit('Not your cup of tea.');

class Courses_m extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
    }

    public function update_course($course_id, $courses)
    {
        // your DB task --should return something
        return true ?: false;
    }
}

在控制器中:

Courses_c.php (在APPPATH . 'config/routes.php'中,您可以设置您喜欢的路线名称)

<?php defined('BASEPATH') or exit('Not your cup of tea.');

class Courses_c extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->load->helper('url');
        $this->load->library('form_validation');//just an library loading example
        $this->load->model('Courses_m');//notice first capital here
    }

    public function update_course_id($course_id)
    {
        if($this->input->post('submit'))
        {
            $courses = array(
                'course_name'=>$this->input->post('course_name'),
                'no_of_hours'=>$this->input->post('no_of_hours')
            );
            // pay attention on capital first when you calling a model method
            // need to be the same as in constructor where file is loaded
            $this->Courses_m->update_course($course_id,$courses);

            // you can use this way
            redirect(base_url("Dashboard/update_course_id/$course_id"));
        }
        // use else block to avoid unwanted behavior
        else
        {
            $result['course']=$this->Courses_m->course_id($course_id);
            $this->load->view('edit_course',$result);
        }
    }
}