- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在购物车(我使用 5 步购物车)中,我添加了单选框“stock_action”,并且我需要将此值发送到购物车对象,因为我想根据该值添加一些额外的订购费用。
在购物车覆盖中,我添加了 $stock_action
变量:
public $stock_action;
/**
* @see ObjectModel::$definition
*/
public static $definition = array(
'table' => 'cart',
'primary' => 'id_cart',
'fields' => array(
'id_shop_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_address_delivery' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_address_invoice' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_carrier' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_currency' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_guest' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'stock_action' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'recyclable' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
'gift' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
'gift_message' => array('type' => self::TYPE_STRING, 'validate' => 'isMessage'),
'mobile_theme' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
'delivery_option' => array('type' => self::TYPE_STRING),
'secure_key' => array('type' => self::TYPE_STRING, 'size' => 32),
'allow_seperated_package' =>array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
),
);
但是在单击购物车中的下一步按钮后,stock_action 单选按钮的值并未发送。
然后我尝试使用 AJAX 发送该值,但我不确定如何正确发送它并在另一侧捕获它以分配给 Cart 对象。我在 cart-summary.js
中尝试了其他函数的各种组合,我想出了这样的结果:
function setStockAction() {
var val = $('input[name=stock_action]:checked').val();
$.ajax({
type: 'POST',
headers: {'cache-control': 'no-cache'},
url: baseUri + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType: 'json',
data: 'controller=cart'
+ '&ajax=true'
+ '&stock_action=' + val
+ '&token=' + static_token
+ '&allow_refresh=1',
success: function(jsonData) {
alert('ok!');
}
});
}
我是否走在正确的道路上,或者在 Prestashop 中有更简单的方法吗?谢谢。
最佳答案
您需要将'stock_action'
字段添加到数据库中的cart
表中。然后这个属性将在您的购物车类实例以及其他属性中可用。如果不这样做,您将在所有与购物车相关的事件中收到错误'field list'中的未知列'stock_action'
,只需打开开发模式即可查看它在 config/defines.inc.php
中将 define('_PS_MODE_DEV_', false);
设置为 true。
UPD:要使您的 AJAX 正常工作,请执行以下步骤(除了前面的步骤之外)1.覆盖/修改controllers/front/OrderController.php方法initContent()并添加下一个代码if (工具::isSubmit('ajax') && 工具::getValue('方法') == 'updateStockAction') {
$this->context->cart->stock_action = (int)Tools::getValue('stock_action');
$this->上下文->购物车->save();
}
紧接着
if (Tools::isSubmit('ajax') && Tools::getValue('method') == 'updateExtraCarrier') {
block
....
}
2. 转到主题 js 文件夹并将 AJAX 代码添加到 global.js
$(document).on('change', 'input[name="stock_action"]', function() {
var val = $('input[name=stock_action]:checked').val();
$.ajax({
type: 'POST',
headers: {'cache-control': 'no-cache'},
url: baseUri + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType: 'json',
data: 'controller=order'
+ '&ajax=true'
+ '&stock_action=' + val
+ '&method=updateStockAction'
+ '&token=' + static_token
+ '&allow_refresh=1',
success: function(jsonData) {
alert('ok!');
}
});
});
3.转到您的主题模板文件 shopping-cart.tpl 并在其中添加您的 radio 输入
<input type="radio" name="stock_action" value="1" />
<input type="radio" name="stock_action" value="0" />
我检查了一下,它有效!在接下来的所有页面上,您将获得 stock_action
的正确值,并且它将一直相关,直到您的购物车存在或您将其更改为不同的
关于javascript - 将新变量添加到 Prestashop Cart 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57053774/
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
我创建了一个上下文处理器,通过在购物车应用程序目录中创建一个新文件并将其命名为 context_processors.py,将当前购物车设置为模板的请求上下文: from .cart import C
我网页顶部的购物车 block 和每个产品中的“添加到购物车”按钮都消失了。这种情况发生在我网站的每个页面上,而且是突然发生的(请原谅,如果我能记忆起/缩小我所做的更改是导致这种情况的原因,那么我就不
我正在尝试在 Shopify 中制作一个 ajaxed 购物车。我已使产品页面将商品添加到购物车,而无需刷新或转到购物车页面。要查看购物车,您可以单击输入或带有 .cart-show 的链接,因此我将
我试图弄清楚如何将 css 类添加到 SimpleCartJS 的购物车表中生成。 (我使用的购物车布局是这样的: http://bootsnipp.com/snippets/featured/sho
我有一个函数add_to_cart想要反向重定向到由single_product函数呈现的产品详细信息页面,该函数具有产品id的slug,无法找到解决它的方法。正在获取这个错误 Reverse for
有人知道购物车(或类似商品)的Unicode字符吗?我找到了比萨饼(U + 1F355),热线电话(U + 2706)以及这是什么(U + 26A7),但没有该死的购物车! 最佳答案 到目前为止,没有
此代码段为我提供了以下错误消息: def cartItems(cart): items=[] for item in cart: items.append(Produc
我想在 prestashop os-commerce 上获取购物车内容。怎么做到的? 最佳答案 您应该看一下位于 classes/Cart.php 中的 Cart 类。有一个名为 getProduct
我正在使用 Magento 购物者主题 (http://shopper.queldorei.com/)。 当我将产品添加到我的购物车时,它会添加多个元素 Cart 我发现是 jQuery 在这里犯
CS-Cart ajax 工作正常,我也收到响应,但如何在我的 View (checkout.tpl)文件上使用 html/js 响应。 Controller (前端):send_sms.php us
我只在 Magento 上工作了几天,但它已经很令人困惑了。我开始思考这个问题,但目前有一个问题是我的思考。 我的客户想要顶部链接旁边的购物篮功能,而不是顶部链接中的“我的购物车”。简单地说,我想做的
在作业中,我们被要求对 CART 模型执行交叉验证。我试过使用 cvFit函数来自 cvTools但收到一条奇怪的错误消息。这是一个最小的例子: library(rpart) library(cvTo
在主产品信息页面中,它显示了完整的产品描述,我试图放入超长的 HTML 代码来进行打包交易。在编写了大约 1200 行 html 后,我遇到了困难。 我可以做一些改变来扩大产品描述的最大字符长度吗?
我想在 shopify 的 cart.liquid 页面上添加结帐进度条。当用户点击产品上的添加到购物车时,我想显示一个进度条。任何帮助将不胜感激。 最佳答案 只要您的客户离开购物车页面去结账,新的
我在代码中存储多个 ID 时遇到问题。我需要将 id 保存在单个变量(数组)中,因为我将在 cart.php 中调用它来显示添加到购物车的元素。这是我的代码。 Marketech | Bu
我今天工作的服务器的主机在安装 x-cart 后关闭了该站点,因为在服务器上发出了以下命令,他们认为这是一个安全漏洞: ls -la 2>&1 id 2>&1;whoami 2>&1; id 2>&1
您好,我正在尝试创建一个在线电子商务商店,尽管有 paypal 购物车上传功能,但我一切正常,我一直在关注来自 developphp.com 的一系列视频这是我的文件 cart.php 中的代码 a
我有一个 cs-cart 项目,它以我不希望的方式显示页面标题(嗯,以客户不喜欢的方式)。 我希望它显示:在主页上:公司名称在其他页面上:公司名称 |页面标题(即公司名称|关于我们)等 我有以下脚本:
我是一名优秀的程序员,十分优秀!