AddProductForm::addtocart PHP Method

addtocart() public method

public addtocart ( $data, $form )
    public function addtocart($data, $form)
    {
        if ($buyable = $this->getBuyable($data)) {
            $cart = ShoppingCart::singleton();
            $request = $this->getRequest();
            $order = $cart->current();
            if ($request && $request->isAjax() && $order) {
                ShopTools::install_locale($order->Locale);
            }
            $saveabledata = !empty($this->saveablefields) ? Convert::raw2sql(array_intersect_key($data, array_combine($this->saveablefields, $this->saveablefields))) : $data;
            $quantity = isset($data['Quantity']) ? (int) $data['Quantity'] : 1;
            $cart->add($buyable, $quantity, $saveabledata);
            if (!ShoppingCart_Controller::config()->direct_to_cart_page) {
                $form->SessionMessage($cart->getMessage(), $cart->getMessageType());
            }
            $this->extend('updateAddToCart', $form, $buyable);
            $this->extend('updateAddProductFormResponse', $request, $response, $buyable, $quantity, $form);
            return $response ? $response : ShoppingCart_Controller::direct($cart->getMessageType());
        }
    }

Usage Example

 public function testForm()
 {
     $controller = new Product_Controller($this->objFromFixture("Product", "socks"));
     $form = new AddProductForm($controller);
     $form->setMaximumQuantity(10);
     $this->markTestIncomplete("test can't go over max quantity");
     $data = array('Quantity' => 4);
     $form->addtocart($data, $form);
     $this->markTestIncomplete('check quantity');
 }