2017-09-11 10 views
0

input type ="hidden"と仕事をしたいので、私は小切手をすることができます。私はカテゴリの製品を表示するスライダーを持っています.2つのAjaxリクエストを通して、購入と削除のボタンをクリックして追加して削除しますが、この質問にはあまり関係はありません。商品ID値の入力からカート商品を削除する

スライド上の1つの製品のみを注文で購入することができますが、その1つを追加してページを更新してもう一度購入ボタンをクリックすると、別の製品が追加されます。私はページの更新時に、これらの製品がすでに追加されている場合は削除されていることを確認したかったが、完了するためにどこを追うべきかわからない。input type ="hidden"を使用するべきだと思う。それを介して、私は追加された製品のIDの価値を保存することができますが、私はこの検証を行う方法がわかりません。

以下では、Ajaxリクエストのコードの他に、すでに作成したボタンと入力のコードを追加して正しく示します。必要に応じて、私が使用するコントローラーのコードを追加します。

ボタンや入力コード:

<button style="margin-left: 11%;" type="button" class="button btn-cart" onclick="addCartao('<?php echo $_product->getId(); ?>')" name="cartaoMensagem<?php echo $_product->getId(); ?>" id="cartaoMensagem<?php echo $_product->getId(); ?>"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button> 
<button style="display: none; margin-left: 11%;" type="button" id="cartaoMensagemRemover<?php echo $_product->getId(); ?>" title="Remover" class="button btn-cart" onclick="removeCartaotoCart('<?php echo $_product->getId(); ?>')" name="cartaoMensagem<?php echo $_product->getId(); ?>"><span><span>Remove</span></span></button> 
<input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="" /> 

Ajaxの依頼コード:

var productSelected = ""; 

     function addCartao(product){ 
      if(productSelected != ""){ 
       removeCartaotoCart(productSelected); // Remove the item in cart, if there is one. 
       } 
      $j('#cartaoMensagem'+product).hide(); 
      $j('#cartaoMensagemRemover'+product).show(); 
      $j('#cartaoMensagemRemover'+product).css({'background-color': '#000000'}); 
      $j.ajax({ 
       type: "POST", 
       url: "<?php echo Mage::getUrl('fol_carousel/ajax/addCartao') ?>", 
       data: { 
       product: product 
       }, 
       dataType: 'json', 
       cache : false, 
       beforeSend: function() { 

       }, 
       success: function (retorno) { 
       var button = $j('#cartaoMensagemRemover'+product); 
       productSelected = product; 

       $j('#cartaoMensagemAdicionado').val(productSelected);     
       $j('.item-custom').append('<tr id="trAppend'+product+'"><td class="a-center lc-thumbnails"><img src="' + retorno['imagem'] + '" width="50" height="50" alt="' + retorno['name'] + '"></td><td><h3 class="product-name">' + retorno['name'] + '</h3></td><td class="a-center">1</td><td class="a-right"><span class="cart-price"><span class="price"> R$ ' + retorno['price'] + '</span></span></td></tr>'); 
       getSubTotal(); 
       getGrandTotal(); 
       }, 
       complete: function() { 

       }, 
       error: function (x,y,z) { 
       alert("error"); 
       alert(x); 
       alert(y); 
       alert(z); 
       } 
      }); 
     } 

     function removeCartaotoCart(itemId){ 
      productSelected = ""; 
      $j('#cartaoMensagemRemover'+itemId).hide(); 
      $j('#cartaoMensagem'+itemId).show(); 
      $j.ajax({ 
       type:"POST", 
       url:"<?php echo Mage::getUrl('fol_carousel/ajax/removeCartao') ?>", 
       data:{ 
        itemId: itemId 
       }, 
       cache: false, 
       beforeSend: function(){ 

       }, 
       success: function(retorno){ 
        var button = $j('#cartaoMensagemRemover'+itemId); 
        $j('#cartaoMensagemAdicionado').val(productSelected);       
        $j('.item-custom #trAppend'+itemId+'').remove(); 
        getSubTotal(); 
        getGrandTotal();      
       }, 
       complete: function() { 

       }, 
       error: function (x,y,z) { 
       alert("error"); 
       alert(x); 
       alert(y); 
       alert(z); 
       } 
      }); 
     } 

答えて

0

あなたがやるべきことは、それが含まれている検証を行うには、小さなPHPコードを作成していますこれらの商品のSKUがカートにある場合は、ブール変数に値を割り当て、inputに挿入してjQueryでこの値を処理します。

検証のためPHPコード:

<?php 
    $array_de_skus_de_cartoes = array(45,60,80,90,102,103,104,105); //SKUs of products 
    $isCartaoAdicionado = 0; 
    $cart = Mage::getModel('checkout/cart')->getQuote(); 
    foreach ($cart->getAllItems() as $item) { 

     foreach ($array_de_skus_de_cartoes as $sku) { 
      if($sku == $item->getProduct()->getSku()) { 
       $isCartaoAdicionado = 1; 
       $cartao_id = Mage::getModel("catalog/product")->getIdBySku($sku); 
      } 
     } 
    } 

    if($isCartaoAdicionado == 1) { 
?> 
     <input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="1" /> 
     <input type="hidden" name="cartao_adicionado_product_id" id="cartao_adicionado_product_id"" value="<?php echo $cartao_id ?>" /> 
<?php 
    } 
    else { 
?> 
     <input type="hidden" name="cartao_adicionado" id="cartao_adicionado" value="0" /> 
     <input type="hidden" name="cartao_adicionado_product_id" id="cartao_adicionado_product_id"" value="" /> 
<?php 
    } 
?> 

Ajaxリクエストコード更新:

var isCartaoAdicionado = $j('#cartao_adicionado').val(); 
    var isCartaoAdicionadoProductId = $j('#cartao_adicionado_product_id').val(); 
    var productSelected = ""; 

    function addCartao(product){ 
     if(isCartaoAdicionado == 1){ 
      removeCartaotoCart(isCartaoAdicionadoProductId); 
     } 
     if(productSelected != ""){ 
      removeCartaotoCart(productSelected); // Remove the item in cart, if there is one. 
     } 
     $j('#cartaoMensagem'+product).hide(); 
     $j('#cartaoMensagemRemover'+product).show(); 
     $j('#cartaoMensagemRemover'+product).css({'background-color': '#000000'}); 
     $j.ajax({ 
      type: "POST", 
      url: "<?php echo Mage::getUrl('fol_carousel/ajax/addCartao') ?>", 
      data: { 
      product: product 
      }, 
      dataType: 'json', 
      cache : false, 
      beforeSend: function() { 

      }, 
      success: function (retorno) { 
      var button = $j('#cartaoMensagemRemover'+product); 
      productSelected = product; 
      $j('#cartaoMensagemAdicionado'+product).val(productSelected);    
      $j('.item-custom').append('<tr id="trAppend'+product+'"><td class="a-center lc-thumbnails"><img src="' + retorno['imagem'] + '" width="50" height="50" alt="' + retorno['name'] + '"></td><td><h3 class="product-name">' + retorno['name'] + '</h3></td><td class="a-center">1</td><td class="a-right"><span class="cart-price"><span class="price"> R$ ' + retorno['price'] + '</span></span></td></tr>'); 
      getSubTotal(); 
      getGrandTotal(); 
      }, 
      complete: function() { 

      }, 
      error: function (x,y,z) { 
      alert("error"); 
      alert(x); 
      alert(y); 
      alert(z); 
      } 
     }); 
    } 

    function removeCartaotoCart(itemId){ 
     productSelected = ""; 
     $j('#cartaoMensagemRemover'+itemId).hide(); 
     $j('#cartaoMensagem'+itemId).show(); 
     $j.ajax({ 
      type:"POST", 
      url:"<?php echo Mage::getUrl('fol_carousel/ajax/removeCartao') ?>", 
      data:{ 
       itemId: itemId 
      }, 
      cache: false, 
      beforeSend: function(){ 

      }, 
      success: function(retorno){ 
       var button = $j('#cartaoMensagemRemover'+itemId);    $j('#cartaoMensagemAdicionado'+itemId).val(productSelected); 
       $j('.item-custom #trAppend'+itemId+'').remove(); 
       getSubTotal(); 
       getGrandTotal(); 
      }, 
      complete: function() { 

      }, 
      error: function (x,y,z) { 
      alert("error"); 
      alert(x); 
      alert(y); 
      alert(z); 
      } 
     }); 
    } 
関連する問題