Cart Functional Overview
All carts have a similar set of functions. They must be able to add items to the cart, change quantity of items in the cart and remove items from the cart. Ideally they should also be able to estimate shipping and taxes for an order and optionally allow for entry of promotional codes (aka coupons).
Because StoreBuilder is designed for customization with an open development layer, you can implement these core functions any way you like or remove/hide these functions.
Cart Implementation Details
The cart page by default will be routed to the
/cart url. The cart page will be rendered using the
CartViewModel class (including any mixins or extenders for customization) and the
sb-cart handlebars template in your active StoreBuilder theme.
POST Request Parameters
You may POST to
/cart with either a JSON payload or Form Url Encoded values payload. It the incoming request has a
Content-Type:application/json header present then StoreBuilder will look for a JSON payload. If the incoming POST request has a
Content-Type:application/x-www-form-urlencoded header present then StoreBuilder will look for Form values.
GET/POST Response Body
If the incoming request has an
Accept:application/json header present, then StoreBuilder will return a JSON payload in the response. Otherwise StoreBuilder will return a rendered view as text/html.
If the incoming request is not requesting a json response, then StoreBuilder will additionally look for a
X-Requested-With:XMLHttpRequest header to determine whether the response should be a partial view or a complete page. If the
X-Requested-With:XMLHttpRequest header is present, then StoreBuilder will return the results of the handlebars template directly, otherwise Storebuilder will route the results to be "wrapped" with any (optional) surrounding view (such as wrapping the results with a Razor view to add all the surrounding page header/footer/etc).
GET/POST Response Data
The data that will either be supplied to Handlebars for rendering a template or serialized as JSON in the response body is defined by the
CartViewModel and any mixins that your custom code or other plugins have added to the