2016-05-15 2 views
0

Во время выполнения обновления я получаю следующее сообщение об ошибкеEdit & Update В Codeigniter

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();?> 

Не знаю что не так с кодом

+0

похоже, что ваш вызов update_course в методе имеет 2 параметра, а сама функция принимает только 1 –

+0

, поэтому то, что решение @SemicolonsandDuctTape – ohmygood

+1

метод update_course ($ course_id, $ courses) не существует в Coursesmodel –

ответ

2

Всегда следует за documentation. По соглашению совета CI имена ваших классов должны следовать за именами файлов. Полагаю, у вас есть это право. Но вы не следовали требованиям к именам файлов и классов ucfirst().

Так что в вашем случае файл не должен быть назван CoursesModel ни класс должен быть назван CoursesModel, но вы должны назвать файл и класс Coursesmodel. Помните правило ucfirst() (относительно CI3 +) для обозначения всех классов, контроллеров, моделей или библиотек.

Кроме того, если вы загружаете эти файлы (модели и библиотеки), для библиотек всегда используйте имя strtolower(), тогда как для моделей вы можете использовать как strtolower(), так и ucfirst() форматированное имя.

Personaly, я использую для загрузки библиотек с помощью strtolower при использовании для загрузки моделей с именем ucfirst, и таким образом я делаю разницу между теми, у кого есть быстрый просмотр кода.

Try с:

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.phpAPPPATH . '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); 
     } 
    } 
} 
+0

спасибо Tpojka попытается сообщить вам – ohmygood

+0

Конечно, вы можете загрузить модель как '$ this-> load-> model ('courses_m');' и использовать ее как '$ this -> courses_m-> update_course ($ course_id, $ курсов); '. Помните, что очень важно иметь одно и то же загруженное и используемое имя. Здесь я просто показал вам, как я его использую. Я рад, что смогу помочь. – Tpojka

+0

в конечном счете работал благодаря alot – ohmygood

0

Возможно, вы не загрузили модель или не указали нам неправильный код. Я так думаю, потому что не могу видеть CoursesModel::update_course(); внутри контроллера.