假设我有一个带有"购物车"功能的在线商店,我希望以RESTful方式实现"空车"链接.
为简单起见,假设我的资源是一个包含CartItems的Cart,每个CartItem都有一个Product.我的URI可能是:
# add a product to the current user's Cart POST /products/product_id/cart_items/ # remove a product from the current user's Cart DELETE /cart_items/cart_item_id/
如果是这样,"空车"链接的RESTful URI会是什么样的?
相反,我可以认为Cart是Actions的通用持有者(如此处所述):
# add a product # form data contains e.g., product_id=123&action=add POST /carts/cart_id/actions/ # remove a product # action_id is the id of the action adding product 123 DELETE actions/action_id # empty cart # form data contains action=clear POST /carts/cart_id/actions/
这种方法似乎比它需要的更复杂.什么是更好的方式?
修订后的问题:我们已将此跟踪到自定义添加到购物车方法.我已完全修改了这个问题.
我正在使用Magento ver的网站上工作.1.3.2.4作为其电子商务平台.我们已经构建了一个自定义的"添加到购物车"流程,该流程通过AJAX请求将多个商品添加到购物车.在此请求之后,在浏览器中使用JavaScript完成一些后处理,然后重定向到"查看购物车"页面.99%的时间此过程似乎在Firefox和Safari中正常运行,但在IE8中,该过程失败.将商品添加到购物车后,重定向到"您的购物车"页面后,购物车为空.
并非所有网站上的项目都是通过此AJAX流程添加的.只有在通过AJAX添加项目之前购物车为空时才会出现此问题.也就是说,如果通过正常的Magento进程添加的项目首先添加到cat中,那么AJAX添加到购物车请求总是成功.Blu清除cookie然后尝试通过AJAX添加将在IE8上一致地失败.
Server是一个Apache/PHP服务器,带有PHP 5.2.9,eAccelerator和Suhosin.请索取任何其他信息,我很乐意提供.我们将会话存储在MySQL数据库中.
这是我们的自定义添加到购物车方法的代码.此代码位于/app/code/core/Mage/Checkout/controllers/CartController.php
:
public function ajaxaddAction()
{
$result = array('success' => true);
try
{
$session = $this->_getSession();
$cart = $this->_getCart();
$products = json_decode($_POST['products'],true);
if(!is_array($products))
{
throw new Exception("Products data not sent");
}
foreach ($products as $product_data)
{
$product = $this->_initProduct($product_data['id']);
if(!$product)
throw new Exception("Product id {$product_data['id']} not found");
$info = array('qty' => $product_data['qty']);
if($product_data['options'])
$info['options'] = $product_data['options'];
$cart->addProduct($product,$info);
}
$cart->save();
$this->_getSession()->setCartWasUpdated(true);
/**
* @todo remove wishlist observer processAddToCart
*/
Mage::dispatchEvent('checkout_cart_add_product_complete',
array('product' …
Run Code Online (Sandbox Code Playgroud) 我一直在研究购物车的数据库结构,并注意到在存储订单详细信息时,产品信息会重复并再次存储在表格中.我想知道这背后的原因是什么?这是我的意思的一个小例子:
产品表
product_id name desc price
1 product 1 This is product 1 27.00
Run Code Online (Sandbox Code Playgroud)
订单表
order_id customer id order_total
1 3 34.99
Run Code Online (Sandbox Code Playgroud)
订单明细表
order_details_id product_id product name price qty
1 1 product 1 27.00 1
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到产品名称和价格再次存储在订单详细信息表中.为什么是这样?我能想到的唯一原因是因为产品细节可能会在下订单后发生变化,这可能会引起混淆.它是否正确?
谢谢
保罗
我添加了一个由两个属性计算的产品,并使用自己的计算价格.问题是我不得不重写大计和小计计算...例如覆盖这些东西.
我希望@stackoverflow是一位解决了我的问题的magento大师:-)
我已经更改了/ app/design/frontend/default/gutlauf/template/checkout/cart/item/default.phtml,其中完成了购物车项目的布局.
但现在我有/ app/design/frontend/default/gutlauf/template/checkout/cart/totals.phtml的问题
<table id="shopping-cart-totals-table">
<col />
<col width="1" />
<tfoot>
<?php echo $this->renderTotals('footer'); ?>
</tfoot>
<tbody>
<?php echo $this->renderTotals(); ?>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我怎么能得到自己的计算?我想出了块
tax/checkout_grandtotal tax/checkout_subtotal tax/checkout_tax
例如/app/design/frontend/default/gutlauf/template/tax/checkout/grandtotal.phtml
<?php echo $this->helper('checkout')->formatPrice($this->getTotal()->getValue()) ?>
Run Code Online (Sandbox Code Playgroud)
根据源代码文件,有一个"Mage_Tax_Block_Checkout_Grandtotal"的心理
我看了/app/code/core/Mage/Tax/Block/Checkout/Grandtotal.php评论了一些内容......但没有改变......
我希望有人可以向我解释购物车计算在哪里"隐藏",我需要一个构建总数的foreach.
我还看了/ app/code/core/Mage/Checkout/Block/Cart/Totals.php
我发现了renderTotal ...没有任何地方获得项目的foreach循环的解决方案,我想要使用类似的东西
$productIds = array();
$productIds[] = $_item['product_id'];
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('gl_special')
->addMinimalPrice()
->addStoreFilter()
->addIdFilter($productIds);
$product = $products->getItemById($_item['product_id']);
#print_r($product);
$bBerechnet = $product->getData('gl_special');
$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
Run Code Online (Sandbox Code Playgroud)
得到我加载的简单产品
public function renderTotal($total, $area = null, $colspan = 1) …
Run Code Online (Sandbox Code Playgroud) 这是一个没有用户登录的基于PHP的网上商店,因为所有的付款都是通过paypal处理的.我的问题是你们会为购物车提出什么建议 - 饼干,会议或两者兼而有之?我不太关心购物车内容的长寿,我希望用户能够在他们下订单之前点击并做一些事情.我倾向于会话,因为有些人可能仍然在他们的机器上禁用cookie.
我正在与之合作的公司正在寻求为他们的电子商务商店实施灵活且可扩展的促销/折扣引擎.促销和折扣的要求变化非常频繁,企业无法预测他们将在未来3个月内推出什么样的想法和促销活动,更不用说3年了.
我想确保他们构建一个灵活的促销评估引擎,可以将购物车中的商品,用户个人资料信息,以及根据日期时间,他们输入的促销代码,他们的个人资料,应用各种规则,他们购物车中的物品,他们来自的http背景等.
我们可以使用任何第三方开源或商业图书馆吗?我们只需要一个评估引擎,而不是一个持久性引擎,因为电子商务网站在Windows Azure的云端运行,而存储在Azure存储中,很少有库兼容.因此,任何基于SQL的解决方案都不起作用.
我正在使用亚马逊结账推车(亚马逊履行).我想整合内联结账与亚马逊购物车.我找不到任何文档来集成两者.
是否有可能做到这一点.请指导我.
我要求我必须在Magento的购物车中更改总计的顺序.我的要求是运费应该在税前显示.目前它显示为小计 - 税收运费 - 总计,我需要作为小计 - 运费 - 税 - 总计.任何人都可以帮我从我可以编辑的地方.
我$_SESSION
用来为我的网上商店动态创建表单.这些表单包含客户想要的产品的自定义信息.这是布局:
第1页
客户填写看起来像这样的表单:
<form action="page2" method="post">
<input type="text" name="size">
<input type="text" name="color">
<input type="submit" name="submit" value="Review Order">
</form>
Run Code Online (Sandbox Code Playgroud)
第2页
客户查看订单详情,并可选择添加更多产品.客户返回第1页订购另一个.所有客户的订单将以第2页的形式显示.
看起来像这样:
Size: 1
Color: blue
Click Here To Checkout
Size: 2
Color:green
Click Here To Checkout
Size:3
color:red
Click Here To Checkout
Run Code Online (Sandbox Code Playgroud)
我想要的是一个将所有订单添加到PayPal购物车的按钮.当然,他们可以通过点击单独添加每个订单Click Here To Checkout
,但是他们将不得不经历一个大循环来添加多个产品.
我希望客户能够添加尽可能多的产品,然后单击一个按钮将所有订单添加到购物车.
这是我尝试的但显然不起作用:
<script>
$(document).ready(function(){
$('#clickAll').on('click', function() {
$('input[type="submit"]').trigger('click');
});
});
</script>
<form action="" method="post">
<input type="text" name="name">
<input type="submit" name="submit" value="submit">
</form>
<form action="" method="post">
<input type="text" name="name">
<input …
Run Code Online (Sandbox Code Playgroud) 我有2张桌子
制品
和类别
(CatParentId 0是父类别).
我想要实现的是当用户点击父类别时,它应该获取该类别中列出的产品以及它的子类别产品,如果用户点击任何子类别,它应该只获取那些产品列在儿童类别中.
这是我到目前为止使用的完整代码,但没有成功:
<section class="col-lg-9 col-md-9 col-sm-9">
<?php
$catId = $catName = $n = "";
$id = 0;
require_once 'Classes/class.Validation.php';
$validate = new Validation();
if ( isset( $_GET['name'] ) && $_GET['name'] != "" ) {
$catName = $_GET['name'];
$u = "SELECT CatId, CatName, CatParentId FROM categories WHERE CatName = '".$catName."'";
$validate->Query($u);
if ($validate->NumRows() >= 1) {
while ($rows = $validate->FetchAllDatas()) {
$id = $rows['CatId'];
$n = $rows['CatName'];
$query = "SELECT
c.CatName,
p.ProdCode,
p.ProdName
FROM
products p, …
Run Code Online (Sandbox Code Playgroud) shopping-cart ×10
magento ×3
php ×3
session ×3
mysql ×2
.net ×1
amazon ×1
cart ×1
checkout ×1
cookies ×1
e-commerce ×1
jquery ×1
paypal ×1
rest ×1
rule-engine ×1