CakePHP - Cart :: read()声明应该与Model :: read兼容

时间:2014-04-10 20:34:28

标签: cakephp

然后另一条消息大致相同的说法

Cart :: save()声明应与Model :: save

兼容

基本问题是,每当我尝试向其添加产品时,购物车都会拒绝更新(它是一个简单的ajax脚本)。 我希望我能更多地谈论这个,但我不知道什么是错的。我试过将不同的参数传递给函数但没有任何作用。这是相关的功能,抱歉它很长。

CartsController:

    $carts = $this->Cart->read();
    $products = array();
    if (null!=$carts) {
        foreach ($carts as $productId => $count) {
            $product = $this->Product->read(null,$productId);
            $product['Product']['count'] = $count;
            $products[]=$product;
        }
    }
    $this->set(compact('products'));
}

    public function update() {
        if ($this->request->is('post')) {
            if (!empty($this->request->data)) {
                $cart = array();
                foreach ($this->request->data['Cart']['count'] as $index=>$count) {
                    if ($count>0) {
                        $productId = $this->request->data['Cart']['product_id'][$index];
                        $cart[$productId] = $count;
                    }
                }
                $this->Cart->save($cart);
            }
        }
        $this->redirect(array('action'=>'view'));
}

购物车型号:

public function save($data) {
    return CakeSession::write('cart',$data);
}

/*
 * read cart data from session
 */
public function read($data) {
    return CakeSession::read('cart', $data);
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这类问题现在已asked a felt million times on Stackoverflow。以下是如何处理编译器错误和通知的基本工作流程,这些工作肯定会帮助您自己解决这些问题:

  1. 阅读错误消息
  2. 暂时考虑一下
  3. Google提供错误消息
  4. 该错误告诉您方法签名必须与继承的父签名匹配。参数必须匹配。

    正如标记已在评论中提到的那样,只有在您确定知道自己正在做什么的情况下才能重载核心类方法。如果不是这很可能最终导致一堆失败。

    您可以禁用严格错误但确实 建议,它们存在是有原因的。见How to eliminate php5 Strict standards errors?

    看起来你正在推车,好吧,这是我送给CakePHP电子商务开发人员的礼物:https://github.com/burzum/cakephp-cart-plugin