Проблема с отображением данных в коде файла представления - PullRequest
0 голосов
/ 20 июня 2019

У меня проблема с Codeigniter. Я не могу отобразить данные в файле просмотра. Ниже приведен код моей модели, контроллера и файла просмотра. Я также приложил скриншот ошибки для лучшей наглядности.

Модель

public function get_projects ($userid = '')
 {
   if (empty($userid)){
     return FALSE;
   }
        $this->db->select('*');
        $this->db->from('projects');
        $this->db->where('userid', $userid);
        $query = $this->db->get();

   return $query->row_array();                 
 }

Контроллер

$uid = $this->session->userdata('user_id');

        $data['details']= $this->projects->get_projects($uid);
        $this->load->view('design/header', $data);
        $this->load->view('design/nav', $data);
        $this->load->view('content/dashboard', $data);
        $this->load->view('design/footer', $data);

View

<div class="col-6">
            <?php foreach ($details as $row){ echo $row->id; } ?>
        </div>

Error

enter image description here

Ответы [ 3 ]

1 голос
/ 21 июня 2019

Проблема здесь в возврате функции модели: return $query->row_array();, который возвращает только 1 массив (или return $query->row();, который также возвращает только 1 объект). Пока вы повторяете это в поле зрения.

Не уверен насчет вашей цели, но вы можете исправить это с помощью или:

  • Не используйте итерацию в поле зрения, просто используйте переменную $details->id
  • Измените return $query->row_array(); на return $query->result();
1 голос
/ 21 июня 2019

Во-первых, звучит так, как будто вы хотите объект , поскольку вы используете обозначение объекта $row->id, а не $row['id'].Это означает, что вам нужно использовать row().Это также означает, что, поскольку у вас будет 1 результат, вам не нужен foreach.

Модель:

public function get_project($userid) {
   $q = $this->db->get_where('projects', array('userid', $userid));
   if ($q->num_rows() !== 1) {
       return false;
   }
   return $q->row();                 
 }

Контроллер:

$uid = $this->session->userdata('user_id');
if (empty($uid)) {
    show_error('user id not set'); // we probably shouldn't have gotten this far
}
$project = $this->projects->get_project($uid);
if ($project === FALSE) {
    show_error("no rows in project table for user with id: $uid");
}
$data['details'] = $project;
$this->load->view('design/header', $data);
$this->load->view('design/nav', $data);
$this->load->view('content/dashboard', $data);
$this->load->view('design/footer', $data);

Просмотр:

<p><?php echo $details->id; ?></p>
<p><?php echo $details->someothervar; ?></p>

Хотя этот код может не решить вашу проблему (я предполагаю, что либо нет проектов для пользователя с таким идентификатором, либо сессия uid установлена ​​неправильно), это поможет вам отладить вещии это хорошая практика, чтобы всегда проверять num_rows() и чтобы ваши переменные выводили то, что вы ожидаете.Я склонен хранить всех этих проверок в контроллере.

0 голосов
/ 21 июня 2019

С вашей страницы просмотра измените $row->id; на $row['id'], и вы получите результат

<div class="col-6">
            <?php foreach ($details as $row){ echo $row['id']; } ?>
 </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...