Здравствуйте, я новичок в рамках codeigniter и мне нужна помощь.
У меня есть форма (в организации таблицы), которая должна быть заполнена всеми видами данных. Одно поле (первая строка, второй столбец) должно быть заполнено выпадающим меню (с данными из таблицы из базы данных) (выберите опцию меню), и мне это удается,
Но вот что я сделал для этого:
когда пользователь нажимает на ссылку (T — Вставить лабораторную работу)
на самом деле он вызывает метод контроллера (my_courses ()) и этот метод:
1 — берет имя пользователя из сессии
2 — загружает модель.
3 — затем он передает имя пользователя загруженной модели
4 — если модель вернет false, то мы вернем сообщение пользователю
5 — иначе, если модель вернет true, мы вернем результаты
Метод CONTROLLERS выглядит так:
function my_courses(){
$username = $this->session->userdata('username'); //1 username from session
$this->load->model('model_professor'); //2 we load a model,whose task is to load professors courses from table
$result =$this->model_professor->professors_classes($username); //3 so we send username to that model
if($result == false){
echo "Professor has no courses ";
}else{ //4 model will return results collected from table
$query = $this->model_professor->professors_classes($username);
$data['main_content'] = 'professor/t_professor_insert_labwork_2';
$data['another_content'] = 'professor/professor_view_links';
$data['records'] = $query;
$this->load->view('includes/template',$data);
}
}
Метод MODEL выглядит так:
function professors_classes($username){
$this->db->where("username", $username);
$query = $this->db->get("table_teach_a_course");
if($query->result()){
return $query->result();
}else{
return false;
}
}
И, наконец, мой ПРОСМОТР (более короткая версия, без всех строк на изображении) t_profess_insert_labwork_2 выглядит так:
<?php
echo form_open("controller_professor/insert_labwork");
?>
<table>
<tr>
<td>Course name:</td>
<td>
<?php if(isset($records)) { ?>
<select>
<?php foreach ($records as $row){ ?>
<option value=""> <?php echo $row->course_code; ?> </option>
<?php } ?>
</select>
<?php
}else {
echo"<h6>No records were returned!</h6>";
} ?>
</td>
</tr>
<tr> <td colspan="2"> <hr/> </td></tr>
<tr>
<td><input type="reset" value="Clear form"></td>
<td></td>
<td><input type="submit" value="Save"></td>
</tr>
</table>
<?php
echo form_close();
?>
<?php
echo validation_errors('<p style="color:red"></p>');
?>
Но когда я нажимаю на ссылку, например (домашняя страница)
он также загружает это представление и некоторые другие, и когда он загружает мое представление t_profess_insert_labwork_2, возникают проблемы.
Вот что называет ссылка ГЛАВНАЯ СТРАНИЦА:
$this->load->view('professor/t_professor_insert_labwork_2');
Но это просто загружает представление, которое является пустым и не имеет заполненного выпадающего меню, и я понимаю, почему, потому что нет ничего, чтобы вызвать мой метод для заполнения этого меню. Но это то, что вызывает у меня проблемы, я просто не знаю, как вызвать из моего представления какой-либо метод, который будет возвращать данные в это поле.
И мой вопрос в том, как я могу вызвать свое представление, которое автоматически вызовет какой-то метод, который вернет данные для заполнения этого выпадающего поля?
Спасибо всем, кто хочет мне помочь !!!!
Вам нужно изменить метод DEFAULT ваших контроллеров (тот, который вызывается при переходе по адресу www.mysite.com/mycontroller), который обычно называется именем вашего контроллера или индекса, я приведу пример с использованием кода, который вы предоставили, предполагая, что что этот метод ваш метод по умолчанию. Глядя на этот код, есть два возможных случая.
СЛУЧАЙ 1 — У вас нет переменной сеанса имени пользователя при начальной загрузке.
function my_courses(){
$this->load->model('model_professor'); //2 we load a model,whose task is to load professors courses from table
//set a default for username
$username = 'mydefaultusername';
//check if a username has been provided and update $username variable
if(isset($this->session->userdata('username')) && !empty($this->session->userdata('username'))){
$username = $this->session->userdata('username'); //1 username from session
}
$result =$this->model_professor->professors_classes($username); //3 so we send username to that model
if($result == false){
echo "Professor has no courses ";
}else{ //4 model will return results collected from table
$query = $this->model_professor->professors_classes($username);
$data['main_content'] = 'professor/t_professor_insert_labwork_2';
$data['another_content'] = 'professor/professor_view_links';
$data['records'] = $query;
$this->load->view('includes/template',$data);
}
}
Других решений пока нет …