在会话

时间:2015-09-23 13:24:27

标签: javascript php jquery foreach smarty

我有一个包含以下代码的foreach循环:

{foreach name=aussen item=products_data from=$products}
        <div class="cart-item clearfix">
            <div class="cart-item-inner clearfix">
                {if $products_data.IMAGE}<a href="{$products_data.LINK}"><img alt="" style="max-width: 40px; max-height: 40px; border: 0pt none; margin: 0px 10px 0px 0pt; float: left;" src="{$products_data.IMAGE}" /></a>{/if}
                <p><div id="testimg" style="display: none;">{$products_data.IMAGE}</div>{$products_data.QTY}{if $products_data.UNIT} {$products_data.UNIT}{else}x{/if} {$products_data.NAME}<br/><span class="price">{$products_data.PRICE}</span></p>
            </div>
        </div>
        {/foreach}
        <div id="dropdown_shopping_cart_total">
            <span>{$txt.text_total} {$TOTAL}</span>
        </div>
        <p class="mwst-hint">{$UST} {if $SHIPPING_INFO}{$SHIPPING_INFO}{/if}</p>
        <div class="cart-button"><a class="button_blue button_set" href="{'shopping_cart.php'|xtc_href_link}"><span class="button-outer"><span class="button-inner">{$button.to_cart}</span></span></a></div>

    {else}
        <div class="cart-item clearfix">
            <div class="cart-item-inner clearfix">
                <p>{$txt.text_empty_cart}</p>
            </div>
        </div>

这是购物车下拉菜单的内容。我有另一个文件,其中包含网站上的产品列表。它允许您向购物车添加内容。有一个输入字段和一个购物车按钮。

现在对于某些产品我想要限制你一次可以购买多少。这意味着我必须将输入字段的值与已放置在购物车中的产品数量进行比较。问题是{$products_data.QTY}在另一个文件中,而不是输入字段和addtocart按钮。

我到目前为止尝试的是给{$products_data.QTY}一个ID并在addtocart按钮上点击,将输入字段与DivID进行比较。问题在于DivID是固定的,这意味着如果我比较它们,它总是将输入字段与第一个DIV进行比较。

现在我的想法是让上面的foreach循环中的产品进入会话,所以我可以在某种程度上比较它。

有人有过如何将foreach循环发送到会话的经验吗?

1 个答案:

答案 0 :(得分:0)

购物篮$ product(product_data)中的单个商品是否具有唯一的productId或唯一的productNumber? 在产品页面上还有这个独特的productId或productNumber吗? 如果是这种情况,那么您可以使用此ID检查产品页面中购物篮中已有的金额。

如果您的shoppingbasket产品使用productId作为密钥,它可能会更容易。

{$products = [
    productId1 => ['amount' => 2, otherinfo...], 
    productId2 => ['amount' => 1, otherinfo...]
]}

在这种情况下,您只需检查{$ products [$ productId] ['amount']},然后在产品页面中设置html或js的最大值。我假设您的产品页面中提供了shoppingcart变量。

我理解这种键值方式可能是你的方式(如果框架不能这样工作)。因此,至少要确保购物篮中的产品数组具有productId。然后你可以循环你的篮子并检查产品是否已经存在以及篮子中有多少。

{$products = [
    0 => ['id' => productId1, 'amount' => 2],
    1 => ['id' => productId2, 'amount' => 1]
]}

//loop products from shopping basket in product page
{foreach $products as $product}
    {if $product['id'] == $currentProduct['id']}
         //do something to limit the number to be ordered
    {/if}
{/foreach}

这假定产品只能在购物车中存在一次并使用金额作为计数器。如果产品可以存在多次,您首先必须计算产品首次放入购物车的次数。

我使用了一个聪明的3循环。您可以随时将其更改为您需要的智能版本。

会话中产品的确切变量是什么我不能告诉你,这可能取决于您的框架...我喜欢使用print_r($ arrayYouWantToSee)来查看哪些项目/键/值可以使用我是某个阵列,也许你也可以使用它:)