2017-02-15 10 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 ... 

} 

ので、注文モジュールは、単に/更新エンティティを保存するために(モデル\順)モデルで構成されてい、エンティティ(Entity \ Order)およびサービス(Service \ Order)を使用して注文/チェックアウトを処理します。

私はそれは良いアイデアですか、私は注文プロセスを分けて、それをより抽象的にするべきだと思います。上記のコードははっきりと見えますが、実際にはif-else-throwステートメントが数多くあり、コードは非常に複雑で読めないようです。

+0

質問にコードやディレクトリ構造を追加して、あなたが試したことを知り、より効果的に手助けをすることができます。これを読んで数分を過ごしてください:http://stackoverflow.com/help/how-to-ask – Aaron

答えて

0

チェックhttps://github.com/speckcommerceさまざまな電子商取引の側面をカバーする多くのモジュールがあります。

関連する問題