1

foreach ループを持つスクリプトを使用しています。これは、Magento の管理領域で設定されている内容に応じて、適切な量のチェックボックスを表示します。

私が直面している問題は、複数のチェックボックスが存在する可能性があることですが、一番上で選択されているチェックボックスのみがフォームで送信される値です。選択したすべてのチェックボックスの値を送信する必要があります。

これは、チェックボックスの値を取得するためにメールスクリプトにあるものです$check = $_POST['check'];

これは、foreach を使用して適切な量のチェックボックスを表示する以下のコードです。

 <?php
    $SKU = "1282670_01";
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$SKU);
    if($product->getTypeId() == "configurable"){  
        $childs = $product->getTypeInstance()->getUsedProducts();  
    }
    $i = 0;
    foreach ($childs as $child) { ?>
    <?php $colour_name =  $child->getAttributeText('real_colour'); ?>
    <li class="notranslate focused" id="fo143li2">
    <fieldset>
    <div>
    <span>

    <img width="35" height="35" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'catalog/product' . $child->getSwatch() ?>">
    <input type="checkbox" style="margin-top:-10px;" onchange="handleInput(this);" tabindex="5" value="<?php echo $colour_name ?>" class="field checkbox" name="check" id="<?php echo $colour_name ?>">
    <label for="<?php echo $colour_name ?>" class="choice"></label>
4

2 に答える 2

2

チェックボックスはすべて同じ名前であるため、$_POST配列には 1 つだけが表示されます。コードを変更して一意の名前を使用するか、配列形式を使用します。name="check[]"

于 2013-06-21T16:59:10.317 に答える
0

名前の値を送信できるのは 1 つの入力のみです (ラジオ ボタンの場合は、「オン」になっている方を使用します)。ただし、名前を に変更することで、そのキーと値のペアを配列に変換できますcheck[]。それぞれcheck[]が配列に結合され、次のように送信されます。name => ['value1', 'value2', 'value3']

同様に、配列の末尾にプッシュする代わりにキーを使用することもできます。PHP name="check[<?php echo $colour_name ?>]" value="true"ではarray('red' => 'true', 'blue' => 'true').

于 2013-06-21T17:05:57.577 に答える