2015-10-19 24 views
1

我正在使用不包含步驟「付款」的自定義結帳方案。但是,當購買步驟失敗時,它會嘗試重定向到付款。我在哪裏可以改變這種行爲? 謝謝。我可以在哪裏設置失敗購買的目標步驟?

更新:

ChceckoutProcessScenario.php

class CheckoutProcessScenario implements ProcessScenarioInterface 
{ 
    public function build(ProcessBuilderInterface $builder) 
    { 
    $cart = $this->getCurrentCart(); 

    $builder 
     ->add('security', 'sylius_checkout_security') 
     ->add('delivery', new Step\DeliveryStep()) 
     ->add('finalize', 'sylius_checkout_finalize') 
     ->add('purchase', 'sylius_checkout_purchase') 
    ; 

    $builder 
     ->setDisplayRoute('sylius_checkout_display') 
     ->setForwardRoute('sylius_checkout_forward') 
     ->setRedirect('sylius_homepage') 
     ->validate(function() use ($cart) { 
      return !$cart->isEmpty(); 
     }) 
    ; 
    } 
    ... 
} 

應用/配置/ config.yml

sylius.checkout.step.delivery.template: '@CoreBundle/Resources/views/Frontend/Checkout/Step/delivery.html.twig' 
sylius.checkout_scenario.class: ZDG\CoreBundle\Checkout\CheckoutProcessScenario 

,然後有checkoutStep,但這些都是隻更改文件。 我查看了state-machine.yml,但它只定義了訂單和付款狀態,我不想修改。

+0

請添加額外的詳細信息,您的實施代碼示例。答案不可能非常具體,而且主要是猜測。 – nakashu

+0

從核心使用'sylius_checkout_purchase'時添加了代碼示例 – Buri

+0

,PurchaseStep.php在那裏獲得了一些支付檢索(檢查)。嘗試複製PurchaseStep.php的邏輯並禁用/轉儲付款邏輯。您必須實施自己的PurchaseSetp或程序設置DummyPayment作爲付款方式。 – nakashu

回答

1

所以,解得萊比預期:在pruchase步驟觸發事件(sylius.checkout.purchase.complete ),其中有一個listiner根據付款狀態返回一個回覆。如果狀態沒有完成,它將從容器中獲取一個參數並重定向到提供的url。此網址硬編碼在sylius/sylius/src/Sylius/Bundle/CoreBundle/Resources/config/services.xml:324

+0

感謝分享解決方案和研究。 – nakashu

0

如果實施實施ProcessScenarioInterface

也有狀態機的配置可能會影響重定向自定義類。 您將不得不配置每次訂單狀態更改後要執行的操作。

有在Sylius\CoreBundle\Resources\config\state-machine.yml

看看您還可以檢查這對於更好地理解https://github.com/Sylius/Sylius/wiki/Status

相關問題