2017-02-15 2 views
0

Я ищу лучший способ организовать процесс заказа/оформления заказа в zf2.ZF2 лучший способ организовать процесс оформления заказа

Какой шаблон лучше всего подходит для этой цели? В настоящее время я просто модуль заказа с сервисом, который обрабатывает заказ в основном ::order() метода, завернутом в сделке, которая выглядит как:

// Simplified, somewhere wrapped in transaction 
public function order($data) 
{ 
    // Get Order model 
    $orderModel = $orm->get('Model\Order'); 
    // Create order entity 
    $order = new Order(); 

    if (!$orderModel->validate($data)) { 
     // Show error fields there 
     throw new Exception('Order validation failed'); 
    } 

    // Form order items from products 
    if (!empty($data['products'])) { 
     foreach ($data['products'] as $product) { 
      $orderItem = new OrderItem(); 
      $orderItem = $orderModel->patch($product); 
      $orderModel->save($orderItem); 
      $order->addOrderItem($orderItem); 
     } 
    } 

    if (!empty($data['card_id'])) { 
     // Process payment transaction 
     $this->paymentService->createTransactionByCardId($data['card_id']); 
    } 

    // Calculate totals, select shipping and etc. in the same manner ... 

} 

Так модуль Order просто состоит из модели (Model \ Order), чтобы сохранить/объект обновления , сущность (Entity \ Order) и услугу (Service \ Order) для обработки заказа/проверки.

Я думаю, что это хорошая идея или я должен отделить процесс заказа и сделать его более абстрактным в соответствии с некоторым шаблоном (может быть, стратегия или что-то в этом роде)? Вышеприведенный код выглядит четко, но в реальности есть много команд if-else-throw, и код выглядит очень сложным и нечитаемым.

+0

Добавить код или структуру каталогов на ваш вопрос, чтобы мы знали, что вы пробовали, и можете помочь вам более эффективно. Проведите несколько минут, читая это: http://stackoverflow.com/help/how-to-ask – Aaron

ответ

0

check https://github.com/speckcommerce У них есть много модулей, которые охватывают различные аспекты электронной торговли.

Смежные вопросы