public function saveAction() { $id = $this->getParam("id"); $data = $this->getParam("data"); $carrier = Carrier::getById($id); if ($data && $carrier instanceof Carrier) { $data = \Zend_Json::decode($this->getParam("data")); $carrier->setValues($data['settings']); $carrier->save(); $ranges = $data['range']; if (is_array($ranges)) { foreach ($ranges as $range) { $rangeObject = null; $deliveryPriceObject = null; if ($range['id']) { $rangeObject = Carrier\RangeWeight::getById($range['id']); } if (is_null($rangeObject)) { $rangeObject = new Carrier\RangeWeight(); } $rangeObject->setCarrier($id); $rangeObject->setDelimiter1($range['delimiter1']); $rangeObject->setDelimiter2($range['delimiter2']); $rangeObject->save(); $deliveryPriceObject = Carrier\DeliveryPrice::getByCarrierAndRange($id, $rangeObject->getId()); if (is_null($deliveryPriceObject)) { $deliveryPriceObject = new Carrier\DeliveryPrice(); } $deliveryPriceObject->setRange($rangeObject->getId()); $deliveryPriceObject->setPrice($range['price']); $deliveryPriceObject->setCarrier($id); $deliveryPriceObject->setRangeType($carrier->getShippingMethod()); $deliveryPriceObject->save(); } } $this->_helper->json(array("success" => true, "carrier" => $carrier)); } else { $this->_helper->json(array("success" => false)); } }