| shop:cart CMS action
    
      | Defined in | /modules/shop/classes/shop_actions.php, lines 507-544 |  
        | Author | LemonStand eCommerce Inc. |  
    Base action for the Cart  page. 
This action can handle the shopping cart content management requests like removing items from the cart, moving items 
to the Postponed list and changing item quantity.
 Managing content of a specific shopping cart
LemonStand supports multiple shopping carts. Using the shop:cart action you can manage a content of any specific 
shopping cart. All handlers and actions which work with shopping cart accept the $cart_name  parameter, 
which specifies a name of a cart. By default LemonStand works with a shopping cart named main . 
 
In order to display and manage a content of a specific shopping cart, need:
 
  Pass the cart_name parameter to the shop:cart action before the action is executed. 
    You can do it using the following code on the Pre Action Code field of the Create/Edit Page form: 
    $_POST['cart_name'] = 'my_second_cart';Pass the cart_name parameter to all AJAX handlers which you invoke on the Cart page. 
    The simplest way to do it is to add a hidden field to the form which wraps your cart content: 
    <input type="hidden" name="cart_name" value="my_second_cart"/> 
Also the cart_name  parameter should be passed to the checkout actions if you want LemonStand to 
create an order from a specific shopping cart items.  
      
    
      
        | Field | Type | Description |  
          | item_postponed | array | a checkbox-type type INPUT element, responsible for moving an item to or from the postponed items list. |  
          | item_quantity | array | item quantity value. Allows users to manage quantities of items in the cart. |  
          | coupon | string | a coupon code. |  
          | cart_name | string | an optional shopping cart name. |  
      
    
      
        | Handler | Description |  
          | on_action | Applies any changes on the Cart page. |  Supported form field details
      ¶
      item_postponed form field    A checkbox-type type INPUT element, responsible for moving an item to or from the postponed items list. 
Example: 
 
<input type="hidden" name="item_postponed[<?= $item->key ?>]" value="0"/>
<input type="checkbox" <?= checkbox_state($item->postponed) ?> name="item_postponed[<?= $item->key ?>]" value="1"/>
The hidden element used here to provide the default value 0 for cases when the checkbox is not checked. By default browsers 
do not send checkbox values if they are not checked. Please always use this method with the item_postponed checkbox.
      ¶
      item_quantity form field    Item quantity value. Allows users to manage quantities of items in the cart. 
Example:  <input type="text" name="item_quantity[<?= $item->key ?>]" value="<?= $item->quantity ?>"/>
      ¶
      coupon form field    A coupon code. 
If specified, LemonStand will apply the coupon code and re-evaluate the $discount variable 
      ¶
      cart_name form field    An optional shopping cart name. 
By default all Shop module actions and AJAX handlers work with the cart named main. Generated PHP variable details
      ¶
      countries variable    A collection of countries for populating the country list for the Estimate Shipping Cost feature. 
Each element in the collection is an object of the Shop_Country  class.
      ¶
      states variable    A list of states for a currently selected country. 
Each element in the collection is an object of the Shop_CountryState  class.
      ¶
      shipping_info variable    A customer's shipping location. 
For new customers all fields in the object are empty. 
      ¶
      discount variable    float $discount; A discount value, calculated using the price rules, defined on the Shop/Discounts page  in the Administration Area. 
The discount value can be not accurate on the Cart page, because price rules can refer to customer details like the shipping 
location which are not known on the Cart page and will become available only during the checkout process.
      ¶
      applied_discount_rules variable    array $applied_discount_rules; A list of discount rules applied to the cart products. 
Each element in the array is an object with two fields: rule  (Shop_CartPriceRule object) and discount . 
You can use this variable for displaying a list of applied discounts. Example: 
 
<h3>Applied discounts</h3>
<? foreach ($applied_discount_rules as $rule_info): ?>
  <p>
    <?= $rule_info->rule->name ?> 
    <?= $rule_info->rule->description ?> - 
    <?= format_currency($rule_info->discount) ?><br/>
  </p>
<? endforeach ?>
      ¶
      cart_total variable    float $cart_total; A sum of all cart items. 
      ¶
      subtotal variable    float $subtotal; A sum of all cart items. Matches the $cart_total variable value. 
      ¶
      cart_total_tax_incl variable    float $cart_total_tax_incl; 
      ¶
      cart_tax variable    float $cart_tax; A total tax amount for all cart items. 
      ¶
      cart_taxes variable    array $cart_taxes; A list of all taxes applied to the cart items. 
Each element in the array is an object with two fields: name, total. 
      ¶
      coupon_code variable    string $coupon_code; A coupon code provided by the customer. Built-in AJAX handlers details
      ¶
      on_action AJAX handler
    Applies any changes on the Cart page.
The handler applies item quantities, removes items marked for removing, applies a coupon code, updates items postpone status.
This handler is equal to the regular form POST method, but works through AJAX. Use this request to create the Apply Changes  
button on the Cart page. Example: 
 
<input onclick="return $(this).getForm().sendRequest(
  'on_action', 
  {update: {'cart_page': 'cart_partial'}})" 
type="image" src="/resources/images/btn_apply.gif" />
 |