【发布时间】:2017-02-17 17:59:55
【问题描述】:
我正在努力从 Sylius 的结帐中删除运输和付款方式步骤。 Sylius 文档中包含有关如何从结帐中删除运输步骤的指南:http://docs.sylius.org/en/latest/cookbook/checkout.html
我已按照本指南进行了额外更改以删除付款方式步骤(我的商店将始终使用一种付款方式,用户无需选择此项)。发生的情况是,当我单击“地址”步骤的下一步时,我被带到“完成”步骤,但随后我立即再次重定向回“地址”步骤,没有错误。我的假设是我需要让系统知道要使用哪种运输方式和付款方式,但我在任何地方的 Sylius 文档中都没有看到该代码。
这是我的更改:
app/Resources/SyliusCoreBundle/config/app/state_machine/sylius_order_checkout.yml:
states: cart: ~ addressed: ~ completed: ~ transitions: address: from: [cart, addressed] to: addressed complete: from: [payment_selected] to: completed
然后我按照建议运行此命令来验证状态机更新:
php bin/console debug:config winzou_state_machine
我可以成功看到我的 sylius_order_config 中删除了这两个步骤:
sylius_order_checkout:
class: Sylius\Component\Core\Model\Order
property_path: checkoutState
graph: sylius_order_checkout
state_machine_class: Sylius\Component\Resource\StateMachine\StateMachine
states:
cart: null
addressed: null
completed: null
transitions:
address:
from:
- cart
- addressed
to: addressed
complete:
from:
- payment_selected
to: completed
app/config/config.yml:
sylius_shop:
checkout_resolver:
route_map:
cart:
route: sylius_shop_checkout_address
addressed:
route: sylius_shop_checkout_complete
app/Resources/SyliusShopBundle/views/Checkout/_steps.html.twig:
{% if active is not defined or active == 'address' %}
{% set steps = {'address': 'active', 'complete': 'disabled'} %}
{% else %}
{% set steps = {'address': 'completed', 'complete': 'active'} %}
{% endif %}
<div class="ui four steps">
<a class="{{ steps['address'] }} step" href="{{ path('sylius_shop_checkout_address') }}">
<i class="map icon"></i>
<div class="content">
<div class="title">{{ 'sylius.ui.address'|trans }}</div>
<div class="description">{{ 'sylius.ui.fill_in_your_billing_and_shipping_addresses'|trans }}</div>
</div>
</a>
<div class="{{ steps['complete'] }} step" href="{{ path('sylius_shop_checkout_complete') }}">
<i class="checkered flag icon"></i>
<div class="content">
<div class="title">{{ 'sylius.ui.complete'|trans }}</div>
<div class="description">{{ 'sylius.ui.review_and_confirm_your_order'|trans }}</div>
</div>
</div>
</div>
app/Resources/SyliusShopBundle/config/routing/checkout.yml:
# This file is a part of the Sylius package.
# (c) Paweł Jędrzejewski
sylius_shop_checkout_start:
path: /
defaults:
_controller: FrameworkBundle:Redirect:redirect
route: sylius_shop_checkout_address
sylius_shop_checkout_address:
path: /address
methods: [GET, PUT]
defaults:
_controller: sylius.controller.order:updateAction
_sylius:
event: address
flash: false
template: SyliusShopBundle:Checkout:address.html.twig
form:
type: sylius_checkout_address
options:
customer: expr:service('sylius.context.customer').getCustomer()
repository:
method: find
arguments: [expr:service('sylius.context.cart').getCart()]
state_machine:
graph: sylius_order_checkout
transition: address
redirect:
route: sylius_shop_checkout_complete
parameters: []
#
#sylius_shop_checkout_select_shipping:
# path: /select-shipping
# methods: [GET, PUT]
# defaults:
# _controller: sylius.controller.order:updateAction
# _sylius:
# event: select_shipping
# flash: false
# template: SyliusShopBundle:Checkout:selectShipping.html.twig
# form: sylius_checkout_select_shipping
# repository:
# method: find
# arguments: [expr:service('sylius.context.cart').getCart()]
# state_machine:
# graph: sylius_order_checkout
# transition: select_shipping
# redirect:
# route: sylius_shop_checkout_select_payment
# parameters: []
#
#sylius_shop_checkout_select_payment:
# path: /select-payment
# methods: [GET, PUT]
# defaults:
# _controller: sylius.controller.order:updateAction
# _sylius:
# event: payment
# flash: false
# template: SyliusShopBundle:Checkout:selectPayment.html.twig
# form: sylius_checkout_select_payment
# repository:
# method: find
# arguments: [expr:service('sylius.context.cart').getCart()]
# state_machine:
# graph: sylius_order_checkout
# transition: select_payment
# redirect:
# route: sylius_shop_checkout_complete
# parameters: []
sylius_shop_checkout_complete:
path: /complete
methods: [GET, PUT]
defaults:
_controller: sylius.controller.order:updateAction
_sylius:
event: summary
flash: false
template: SyliusShopBundle:Checkout:complete.html.twig
repository:
method: find
arguments: [expr:service('sylius.context.cart').getCart()]
state_machine:
graph: sylius_order_checkout
transition: complete
redirect:
route: sylius_shop_order_pay
parameters:
paymentId: expr:service('sylius.context.cart').getCart().getLastNewPayment().getId()
form:
type: sylius_checkout_complete
options:
validation_groups: 'sylius_checkout_complete'
我清除了我的缓存,据我所知,这两个额外的步骤已从结帐中删除。在地址步骤上单击下一步确实会将我发送到最后的“结帐”步骤,它只是 302 让我直接返回地址步骤而没有错误。
【问题讨论】:
标签: sylius