On 05/18/2014 01:43 AM, Michael B Allen wrote:
Hi All,


My current technique seems a little hackish because I'm using the
hidden form element "cmd" to modify the action. In practice it might
seem purer to modify the action to call /purchase/remove or
/purchase/update for use with modern routing on the server.

Whether you are adding an item, removing an item, adding a code, or whatnot - all those actions are based on "updating" the order.

There is no need to do "different" processing for each one, you can do all of that processing in one process.

IE: "removing" an item is equivalent to setting the item quantity to 0 or less[just for that joker who decides to put -1000 in the quantity field and force a submit]. So for every item that is submitted on the form, you can check the quantities, if zero or negative then if the product id is in the order list, remove it.

If positive, then either add or update the quantity.

If an item currently in the cart was not submitted, leave it alone.

This allows for submission updates that only change a single item, delete items, add multiple items, etc.

Coupon codes work in the same manner. If there is no coupon code submitted, then you use the coupon code currently stored in the session. If a coupon code is added, then add it to the session. If there is an existing coupon code and a new one was entered, decide what you want to do[ie you might allow multiple codes, you might not.... ]

Basically each of these steps can be encapsulated into your class and processed in one step:

Class cart

function updateItems(....$itemInfoList);
function updateCoupon(...$couponInfo);

function update()
{
// get the info submitted
$this->updateItems($itemList);
$this->updateCoupon($coupon);
....
}

Up to you how you want to handle error checking - check between each step, check at the end, etc. If storing data into an SQL database, you can use transactions to undo updates on an error.


Technically, you really should use PUT instead of POST, since POST implies all the information is on the form, wheras PUT implies that your are only submitting changes.

Not relevant is DELETE. For MOST "deletions" your really doing an update. IE your not "deleting" an item from the cart, you are updating the cart and removing that item. Even if you "delete" the entire cart, all visitors have a cart, what your really doing is "emptying" the cart.
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show-participation

Reply via email to