Skip to content

Request scoping

You are viewing the next version (v6.7) of the documentation.
Click here to switch to the stable version (v6.6), or use the version switcher on the left to navigate between versions.

Request scoping

When you are in a subscription checkout, you are using a separate cart and context. In Storefront, there is an additional URL parameter (subscriptionToken) that gets resolved. In headless, there are two header parameters that need to be set namely sw-subscription-plan and sw-subscription-interval.

Below is an example of the context set on a subscription cart in the Storefront:

xml
    <route id="frontend.subscription.checkout.cart.page"
           path="/subscription/checkout/cart/{subscriptionToken}"
           methods="GET"
           controller="subscription.storefront.controller.checkout::cartPage">
        <default key="_noStore">true</default>
        <default key="_routeScope"><list><string>storefront</string></list></default>
        <default key="_subscriptionCart">true</default>
        <default key="_subscriptionContext">true</default>
        <default key="_controllerName">checkout</default>
        <default key="_controllerAction">cartpage</default>
        <default key="_templateScopes">subscription</default>
        <option key="seo">false</option>
    </route>

And, here is an example of the headers set on a subscription cart using headless:

bash
curl -XPOST /
    -H 'sw-subscription-plan: planId' /
    -H 'sw-subscription-interval: intervalId' /
    -d 'your body' /
    '/store-api/subscription/{subscriptionId}/activate'

These context definitions can be found in Subscription/Resources/app/config/routes/storefront.xml or Subscription/Resources/app/config/routes/store-api.xml.