2016-11-21 420 views
0

,我發現了錯誤:Shopify缺少的參數ID

Parameter Missing or Invalid: Required parameter missing or invalid: id

當試圖添加一個產品從產品頁面籃下,不明白爲什麼會這樣?

<form action="/cart/add" method="post" enctype="multipart/form-data"> 
     {% if product.options.size > 1 %} 
     <fieldset class="group"> 
      <ul class="checkbox"> 
      {% for variant in product.variants %} 
      {% if variant.available == true %} 

        <li> 
        <label> 
        <input type="radio" value="{{variant.id}}" name="id" /> 
        {{ variant.title }} for {{ product.price | minus:variant.price | money_with_currency }} 
        </label> 
        </li> 
      {% else %} 
      {% endif %} 
      {% endfor %} 
      </ul> 
     </fieldset> 
     {% endif %} 
      <input type="submit" name="add" id="add" class="inpost-buy w-button" value="Add to Bag →"></input> 
     </form> 

任何幫助獲得這種排序將是輝煌!

編輯 - 更新的代碼

<form action="/cart/add" method="post"> 
      {% if product.options.size > 1 %} 
      <fieldset class="group"> 
       <ul class="checkbox"> 
       {% for variant in product.variants %} 
       {% if variant.available == true %} 
         <li> 
         <input type="radio" value="{{variant.id}}" name="id" {%if variant.id == product.selected_or_first_available_variant.id %} checked{% endif %} > 
         <label>{{ variant.title }} for {{ product.price | minus:variant.price | money_with_currency }}</label> 
         </li> 
       {% else %} 
       {% endif %} 
       {% endfor %} 
       </ul> 
      </fieldset> 
      {% else %} 
      <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}"> 
      {% endif %} 
       <input type='hidden' name='quantity' value='1'> 
       <input type="submit" name="add" id="add" class="inpost-buy w-button" value="Add to Bag →"></input> 
      </form> 
+0

爲什麼'enctype =「multipart/form-data」'...? – CBroe

+0

因爲我認爲它也考慮到變體選項以及 – user3082823

+0

這與enctype有什麼關係?是否有任何文件上傳通過相同的形式發生,或者什麼? – CBroe

回答

1

你需要確保你至少發送的ID。我認爲你也需要一定的數量(如果你使用購物車api,你會這樣做),但如果沒有給出,那麼直接形式的帖子現在可能會假設爲1。我會添加一個數量。如果您不希望它只顯示type=hidden

你的第二個問題是你的代碼沒有回退。如果某個產品有選件但沒有可用的變體,則會卡住。通常我使用一個變量來追蹤我是否有可購買的變體。您可以通過多種方式來做到這一點。我已經爲使用product.first_available_variant添加了一個測試:

{% if product.first_available_variant == true %} 
<form ...> 
{% if product.options.size > 1 %} 
... 
<input type="radio" value="{{variant.id}}" name="id" {%if variant.id == product.selected_or_first_available_variant.id %} checked{% endif %} > 
<label>{{ variant.title }} for {{ product.price | minus:variant.price | money_with_currency }}</label> 

... 
{% else %} 
<input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}"> 
{% endif %} 

<input type='hidden' name='quantity' value='1'> 

</form> 
{% else %} 
<p>{{ 'no_product_available' | t }}</p> // or just some text if no locale support. 
{% endif %} 
+0

不幸的是,它仍然返回參數丟失或無效:必需的參數丟失或無效:ID – user3082823

+0

你確實有複選框嗎?如果您使用chrome和dev工具,當您保留網絡日誌時會發生什麼 - 查看POST條目並顯示標題頁。您的帖子位於請求和響應標題部分的下方。你能在這裏粘貼嗎? – bknights

+0

添加通過網絡日誌發送的'add'/ POST的頭文件 – user3082823