2017-03-02 49 views
1

即使我有點尷尬地問這個問題,在這裏。我試圖在我的控制器文件中定義$ stock_status_id變量,我將在後面的tpl中回顯。我在控制器文件設置爲'stock_status_id' => $result['status_stock_id'],但它給我的Opencart 2.2.0定義庫存狀態ID

未定義指數 'stock_status_id' 錯誤

。通常情況下,這就足夠了,因爲它與我定義的其他變量一樣。我在這裏做錯了什麼? stock_status_id字段存在於oc_product表中。我的整個控制器文件如下:

<?php 
class ControllerModuleDobavljivi extends Controller { 
    public function index($setting) { 
     $this->load->language('module/dobavljivi'); 
     $data['logged'] = $this->customer->isLogged(); 
     $data['heading_title'] = $this->language->get('heading_title'); 
     $data['customer_group_id'] = $this->customer->getGroupId(); 

     $data['text_tax'] = $this->language->get('text_tax'); 

     $data['button_cart'] = $this->language->get('button_cart'); 
     $data['button_wishlist'] = $this->language->get('button_wishlist'); 
     $data['button_compare'] = $this->language->get('button_compare'); 

     $this->load->model('catalog/product'); 

     $this->load->model('tool/image'); 

     $data['products'] = array(); 

     $filter_data = array(
      'sort' => 'p.stock_status_id', 
      'order' => 'DESC', 
      'start' => 0, 
      'limit' => $setting['limit'] 
     ); 

     $results = $this->model_catalog_product->getProducts($filter_data); 

     if ($results) { 
      foreach ($results as $result) { 
       if ($result['image']) { 
        $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); 
       } else { 
        $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); 
       } 

       if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { 
        $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); 
        $wholesale = $this->currency->format($this->tax->calculate($result['wholesale'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); 
       } else { 
        $price = false; 
        $wholesale = false; 
       } 

       if ((float)$result['special']) { 
        $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); 
       } else { 
        $special = false; 
       } 

       if ($this->config->get('config_tax')) { 
        $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); 
       } else { 
        $tax = false; 
       } 

       if ($this->config->get('config_review_status')) { 
        $rating = $result['rating']; 
       } else { 
        $rating = false; 
       } 


       $data['products'][] = array(
        'product_id' => $result['product_id'], 
        'thumb'  => $image, 
        'name'  => $result['name'], 
        'stock_status_id' => $result['status_stock_id'], 
        'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 
        'price'  => $price, 
        'wholesale' => $wholesale, 
        'special'  => $special, 
        'tax'   => $tax, 
        'upc'  => $result['upc'], 
        'rating'  => $rating, 
        'href'  => $this->url->link('product/product', 'product_id=' . $result['product_id']) 
       ); 
      } 

      return $this->load->view('module/dobavljivi', $data); 

     } 
    } 

} 

謝謝。

回答

1

在您的產品型號中,請確保您在getProducts($data = array())中獲取stock_status_id,然後它將返回預期結果。

+0

非常感謝您的幫助,我不敢相信我忽略了這一點! – Nancy

+0

歡迎,我很高興,如果它可以幫助你。 –

1

產品數據將以$products陣列的形式提供。嘗試通過循環訪問您的$products陣列來訪問stock_status_id。要更清楚地查看您的陣列,請使用var_dump($products)。這將完全解釋你的數組。

+0

嗨和thanx的答覆。它顯示[「stock_status_id」] => NULL。但事實並非如此,每件產品都有一定的庫存狀態。 – Nancy

+0

你應該檢查你的模型,是模型真正返回相同指數的股票價值。 – yogesh84

+0

我不知道我明白你的意思。模型爲什麼要回報股票價值? – Nancy