我收到错误:
致命错误:在非对象上调用成员函数getProducts() 在 /var/www/vhosts/designsense.net.au/gypsy/public_html/catalog/controller/module/cart.php 在第23行
这是我正在使用的代码。
class ControllerModuleCart extends Controller {
protected function index() {
$this->language->load('module/cart');
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_subtotal'] = $this->language->get('text_subtotal');
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['text_remove'] = $this->language->get('text_remove');
$this->data['text_confirm'] = $this->language->get('text_confirm');
$this->data['text_cart'] = $this->language->get('text_cart');
$this->data['text_checkout'] = $this->language->get('text_checkout');
$this->data['button_checkout'] = $this->language->get('button_checkout');
$this->data['button_remove'] = $this->language->get('button_remove');
$this->data['text_cart'] = $this->language->get('text_cart');
$this->data['cart'] = $this->url->link('checkout/cart');
$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
// Get Cart Products
$this->data['products'] = array();
foreach ($this->cart->getProducts() as $result) {
$option_data = array();
foreach ($result['option'] as $option) {
$option_data[] = array(
'name' => $option['name'],
'value' => (strlen($option['option_value']) > 20 ? substr($option['option_value'], 0, 20) . '..' : $option['option_value'])
);
}
有关可能导致此问题的任何建议?
答案 0 :(得分:0)
您无法在$this->cart->getProducts();
循环中使用foreach
。
因此您需要为变量
赋值 $products = $this->cart->getProducts();
这一小段代码最重要的是它调用函数getProducts
,这是system/library/cart.php
中的核心过程。变量$products
现在具有整个购物车数组+所有可能的选项,并且可以“迭代”通过。迭代意味着筛选数组,收集它的内容或通过循环。让我们来看看f unction getProducts();
In system/library/cart.php
中发生的事情,找到这个函数的顶部:
然后在foreach
循环
foreach ($products as $product)
{
//your code here
}
此代码是foreach(
)循环设置,用于遍历我们在system/library/cart.php
中设置的数组。它负责显示购物车页面中显示的所有内容以及产品选项。 foreach ($products as $product) {
以下的所有内容都会根据需要重复多次,直到所有产品在阵列中停止运行。
这样可以正常工作。
编辑01
public function getProducts()
{
if ( !$this->data )
{
foreach ( $this->session->data['cart'] as $key => $quantity )
{
$product = explode(':', $key);
$product_id = $product[0];
$stock = true;// Options
if ( isset($product[1]) )
{
$options = unserialize(base64_decode($product[1]));
}
else
{
$options = array();
}
}
}
}
答案 1 :(得分:0)
尝试在调用函数getProducts()
之前加载模型$this->load->model('catalog/product');