Opencart的自定义管理区 - >查询只显示表的第一条记录(Opencart custom

2019-10-22 11:26发布

我有,我一个大学校项目创造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运行查询他们似乎很好地工作。 我必须在这里做一些事情(或多个事物)可怕的错误,任何人都可以有所帮助?

Answer 1:

将返回$ 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;
}


Answer 2:

这是因为默认方法指数()不发送任何数据到模板。 当您访问的页面此模块,则URL将SITEURL ** /模块/ your_module **令牌= ...

这将调用默认的方法是索引()来调用您想使用另一种方法模块/ your_module / klantenlijst&记号= ...

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

在索引方法,你就可以在.tpl为$ verkopen使用它; (Opencart的使用PHP的提取物()方法)

在Opencart的2你可以使用$ data数组。

编辑/添加:你应该把查询的MVC和使用的示范方

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

在控制器其中klantenlijst()是模型内的方法。



文章来源: Opencart custom admin area -> queries only showing first record of tables