/** * Checkout */ public function action_checkout() { $errors = []; $cart_contents = $this->cart->contents(); if (empty($cart_contents)) { $this->redirect(Route::url('f_cart')); } /** * @var $obj_customer Model_Shop_Customer */ $obj_customer = ORM::factory('Shop_Customer'); /** * @var $obj_order Model_Shop_Order */ $obj_order = ORM::factory('Shop_Order'); $sel_deliveries = ORM::factory('Shop_Order_Delivery')->find_for_select('id', 'title'); $delivery_id = Arr::get($_POST, 'delivery_id', 1); if (!in_array($delivery_id, Model_Shop_Order_Delivery::get_arr_valid_ids())) { $delivery_id = 1; } if ($this->request->is_post()) { $obj_customer->pre_post(); $obj_customer->where('phone', '=', Arr::get($_POST, 'phone'))->find(); if (!$obj_customer->loaded()) { $obj_customer = ORM::factory('Shop_Customer'); } $obj_customer->values($_POST); try { $obj_customer->save(); } catch (ORM_Validation_Exception $e) { Message::set('error', 'Ошибка при оформлении заказа!'); $errors = $e->errors('validation'); } if (empty($errors)) { // Сохраняем новый заказ $order_id = $obj_order->add_order($obj_customer->id, $delivery_id, $this->cart->total()); /** * @var $obj_order_product Model_Shop_Order_Product */ $obj_order_product = ORM::factory('Shop_Order_Product'); // Сохраняем заказанные товары $obj_order_product->add_order_products($order_id, $cart_contents); // Отправляем mail if (Mail::order($obj_customer->email, $order_id)) { //Message::set('success', 'Mail sent'); } else { //Message::set('error', 'Mail not send'); } $this->cart->destroy(); //Message::set('success', 'Ваш заказ успешно отправлен на обработку!'); $this->redirect(Route::url('f_cart', ['action' => 'checked', 'rowid' => $order_id])); } } // Views $this->breadcrumbs = View::factory('frontend/v_breadcrumbs')->set('page_title', __('Оформление заказа')); $v_delivery_address = View::factory('shop/frontend/cart/v_delivery_addr_' . $delivery_id, ['obj_order' => $obj_order, 'errors' => $errors])->bind('v_addresses', $v_addresses); $this->content = View::factory('shop/frontend/cart/v_cart_checkout', ['v_delivery_address' => $v_delivery_address, 'sel_deliveries' => $sel_deliveries, 'obj_customer' => $obj_customer, 'obj_order' => $obj_order, 'cart' => $this->cart, 'errors' => $errors]); }
/** * @throws View_Exception */ public function action_checkout() { $delivery_id = Arr::get($_POST, 'delivery_id'); $obj_order = ORM::factory('Shop_Order'); if (!in_array($delivery_id, Model_Shop_Order_Delivery::get_arr_valid_ids())) { $delivery_id = 1; } $v_delivery_address = View::factory('shop/frontend/cart/v_delivery_addr_' . $delivery_id, ['obj_order' => $obj_order])->bind('errors', $errors)->bind('v_addresses', $v_addresses)->render(); $this->json['success'] = true; $this->json['content'] = $v_delivery_address; }