4

我在我的应用程序中使用 spree 2.0.0。我只想知道如何编辑狂欢结账或如何在狂欢结账过程中完全删除/禁用任何“步骤”。

对此有什么想法吗?

4

3 回答 3

11

正如文档所说,您可以使用remove_checkout_step辅助方法(这也比重新定义整个结帐过程更清晰),例如:

Spree::Order.class_eval do
  # ...
  remove_checkout_step :delivery
  # ...
end
于 2013-08-06T12:01:51.703 回答
6

我刚刚找到了解决方案。这里是。

Step 1:Create app/models/order_decorator.rb file

Step 2: Copy following code in your order_decorator.rb 

Spree::Order.class_eval do
  checkout_flow do
    go_to_state :address
    #go_to_state :delivery
    go_to_state :payment, if: ->(order) {
      order.update_totals
      order.payment_required?
    }
    go_to_state :confirm, if: ->(order) { order.confirmation_required? }
    go_to_state :complete, if: ->(order) {
      (order.payment_required? && order.has_unprocessed_payments?) || !order.payment_required?
    }
    remove_transition from: :delivery, to: :confirm
  end
end

示例:如果要删除交付状态,只需将其注释掉即可。您可以注释掉任何步骤。

您可以在文档中找到更多信息。

于 2013-08-06T12:04:29.933 回答
4

Spree 中的默认结帐步骤

  1. 地址
  2. 送货
  3. 支付
  4. 确认

Spree 允许您使用相应的帮助程序修改结帐流程以添加或删除步骤。

  • insert_checkout_step
  • remove_checkout_step

在您的情况下,您应该使用 remove_checkout_step(删除结帐步骤) remove_checkout_step 一次只会删除一个结帐步骤:

  • remove_checkout_step :地址
  • remove_checkout_step :delivery
于 2014-02-21T12:18:38.463 回答