Всегда следует за 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.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);
}
}
}
похоже, что ваш вызов update_course в методе имеет 2 параметра, а сама функция принимает только 1 –
, поэтому то, что решение @SemicolonsandDuctTape – ohmygood
метод update_course ($ course_id, $ courses) не существует в Coursesmodel –