如何覆盖Spree结帐表单和步骤流?

Muh*_*jaz 4 ruby ruby-on-rails spree ruby-on-rails-3

我在我的应用程序中使用spree 2.0.0.我只是想知道如何编辑spree checkout或如何在Spree结帐过程中完全删除/禁用任何"Step".

有什么想法吗?

Mar*_*pka 11

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

Spree::Order.class_eval do
  # ...
  remove_checkout_step :delivery
  # ...
end
Run Code Online (Sandbox Code Playgroud)


Muh*_*jaz 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
Run Code Online (Sandbox Code Playgroud)

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

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