Area di amministrazione personalizzata di Opencart -> query che mostrano solo il primo record di tabelle

Sto riscontrando un problema con alcune pagine personalizzate che sto creando in Opencart per un grande progetto scolastico. Più in particolare, sembra che il model non stia trasmettendo dati di query al controller e che la vista non sia in grado di visualizzare i dati.

Ho letto questo post ( Come creare una pagina di amministrazione personalizzata in opencart? ) E ho iniziato a lavorare da lì. L'idea è fondamentalmente quella di creare un portle where l'amministratore può rivedere tutti gli ordini, tutti i clienti, tutti i prodotti e modificare i prodotti.

Ora, dato che sono abbastanza nuovo per la programmazione Opencart e MVC in generale, mi rendo conto che ci devono essere modi migliori per get ciò che voglio rispetto a quello che ho fatto qui e apprezzerei davvero each aiuto e / o consiglio che qualcuno potesse offrire. Ecco il mio codice per il model:

public function verkopenLijst() { $query = $this->db->query("SELECT * FROM `shop_order_product`"); if($query->num_rows > 0){ $verkopen = arrays(); foreach($query->rows as $result){ $verkopen[] = arrays( '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; } } } } ?> 

E uno dei controller (il codice sembra lo stesso per vendite, clienti e prodotti per ora):

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

Il problema, in particolare, è che la vista non mostra alcun dato quando chiamo la function controller che fa riferimento al model.

Ho provato a mettere le funzioni del model nel controller (so che non è una buona pratica, ma mi stavo disperando), e quando lo faccio viene mostrato solo il primo record del tavolo. Tuttavia, quando eseguo le query in phpmyadmin, sembrano funzionare correttamente. Devo fare qualcosa (o più cose) orribilmente sbagliato qui, qualcuno potrebbe essere di aiuto?

Put return $ verkopen; dopo il tuo foreach.

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

Questo perché il metodo predefinito index () non invia alcun dato al model. Quando accedi alla pagina per questo module, l'url sarebbe siteurl ** / module / your_module ** & token = …

Questo chiama il metodo predefinito index () Per call un altro metodo devi usare module / your_module / klantenlijst & token = …

Mettere

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

nel metodo index e sarai in grado di usarlo nel .tpl come $ verkopen; (OpenCart utilizza il metodo extract () di PHP)

In OpenCart 2 dovresti usare l'arrays $ data.

modifica / aggiunta: è necessario inserire le query nel lato Modello di MVC e utilizzarle

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

nel controller where klantenlijst () è un metodo all'interno del model.