Специальная область администратора Opencart -> запросы, показывающие только первую запись таблиц

У меня проблема с некоторыми пользовательскими страницами, которые я создаю в Opencart для большого школьного проекта. Более конкретно, кажется, что модель не передает какие-либо данные запроса контроллеру, и представление не может отображать данные.

Я прочитал этот пост ( как создать пользовательскую страницу администратора в opencart? ) И начал работать оттуда. Идея состоит в том, чтобы создать портал, где администратор может просматривать все заказы, всех клиентов, все продукты и редактировать продукты.

Теперь, поскольку я совершенно новичок в программировании Opencart и MVC в целом, я понимаю, что должны быть лучшие способы добиться того, чего я хочу, чем то, что я здесь сделал, и я был бы очень признателен за любую помощь и / или совет, которые могли бы предложить. Вот мой код для модели:

public function verkopenLijst() { $query = $this->db->query("SELECT * FROM `shop_order_product`"); if($query->num_rows > 0){ $verkopen = array(); foreach($query->rows as $result){ $verkopen[] = array( 'name' => $result['name'], 'model' => $result['model'], 'quantity' => $result['quantity'], 'price' => $result['price'], 'total' => $result['total'], 'tax' => $result['tax']); return $verkopen; } } } public function klantenLijst() { //selecteer alles uit de tabel "order_product" $query = $this->db->query("SELECT * FROM `shop_customer`"); //als er rijen bestaan, geef dan deze rijen terug aan de functie $klanten = $query->rows; if($query->num_rows > 0) { foreach($klanten as $rows) { return $rows; } } } public function productenLijst() { $query = $this->db->query("SELECT * FROM `shop_product_description`"); $klanten = $query->rows; if($query->num_rows > 0) { foreach($klanten as $rows) { return $rows; } } } } ?> 

И один из контроллеров (код выглядит так же для продаж, клиентов и продуктов на данный момент):

 class Controllercustomverkopen extends Controller{ public function Index(){ //hier roep ik de view "verkopen" aan $template="custom/verkopen.tpl"; // .tpl location and file //hier roep ik het model aan $this->load->model('custom/hoofdpagina'); $this->template = ''.$template.''; $this->response->setOutput($this->render()); } public function verkopenTonen(){ $this->load->model('custom/hoofdpagina'); $verkopen = $this->model_custom_hoofdpagina->verkopenLijst(); } } 

Проблема, в частности, заключается в том, что представление не отображает никаких данных, когда я вызываю функцию контроллера, относящуюся к модели.

Я попытался помещать функции модели в контроллер (я знаю, что это не очень хорошая практика, но отчаяние), и когда я это делаю, появляется только первая запись таблицы. Однако, когда я запускаю запросы в phpmyadmin, они, похоже, работают нормально. Я должен что-то делать (или несколько вещей) ужасно неправильно, может ли кто-нибудь помочь?

Положите return $ verkopen; после вашего foreach.

 public function verkopenLijst() { $query = $this->db->query("SELECT * FROM `shop_order_product`"); $verkopen = array(); if($query->num_rows > 0){ foreach($query->rows as $result){ $verkopen[] = array( 'name' => $result['name'], 'model' => $result['model'], 'quantity' => $result['quantity'], 'price' => $result['price'], 'total' => $result['total'], 'tax' => $result['tax']); } } return $verkopen; } 

Это потому, что метод метода по умолчанию () не отправляет никаких данных в шаблон. Когда вы заходите на страницу для этого модуля, url будет siteurl ** / module / your_module ** & token = …

Это вызывает метод по умолчанию index () Чтобы вызвать другой метод, вы будете использовать module / your_module / klantenlijst & token = …

Положил

 $this->data['klantenlijst'] = $this->klantenLijst(); 

в методе индекса, и вы сможете использовать его в .tpl как $ verkopen; (OpenCart использует метод extract () PHP)

В OpenCart 2 вы должны использовать массив $ data.

edit / addition: вы должны поместить запросы на стороне модели MVC и использовать

 $klantenlijst = $this->model_module_your_module->klantenlijst(); 

в контроллере, где klantenlijst () – метод внутри Модели.