将所选值指定为POST值

时间:2011-03-31 03:47:16

标签: php html ajax

我正在尝试将选定的值设置为购物车中的POST值。

该片段是:

<div class="extra-option">
  <ul>
    <li><span>Size:</span></li>
    <? foreach ($product->extra_options as $option):
      $control_name = 'grouped_products[' . $product->id . '][product_extra_options]['.$option->option_key.']';
      $posted_options = post('grouped_products[' . $product->id . '][product_extra_options]', array());
      $is_checked = isset($posted_options[$option->option_key]);
    ?>
    <input name="<?= $product->id ?>"
      <?= radio_state($is_checked) ?> 
      id="extra_option_<?= $option->id ?>"
      value="<?= $option->option_key ?>"
    type="radio"/>
    <label for="extra_option_<?= $option->id ?>"><?= h($option->description) ?>:</label>
    <? endforeach ?>
  </ul>
  <div class="clear"></div>
</div>

AJAX Handler片段是:

function on_addProductGroupToCart($controller) {
  foreach(post('grouped_products', array()) as $product_id => $product) {
    $_POST['product_cart_quantity'] = 1;
    $_POST['product_id'] = $product_id;
    $_POST['product_options'] = $product['product_options'];
    $_POST['product_extra_options'] = $product['product_extra_options'];
    $controller->exec_action_handler('shop:on_addToCart');
  }
}

我知道我必须使用的$ POST片段是

$_POST['product_extra_options'] = $product['product_extra_options'];

如果保留原样,我收到的错误是:“未定义索引:product_extra_options

那么,如何将POST变量指定为选定值?

感谢!!!

2 个答案:

答案 0 :(得分:1)

你永远不应该为$ _POST []或$ _GET []赋值 - 只从它们中检索值。 要填写$ _POST变量,您需要通过表单提交数据。

答案 1 :(得分:0)

您可以通过值属性(或文本框中的文本,如果它是文本框)分配post变量,其中POST数组键是name属性。例如:

<input type="text" name="myInput" />

现在,提交表单后,您可以使用以下方法获取他们输入的文本:

$_POST['myInput']

对于像复选框(或单选按钮)这样的东西,它是赋值POST变量内容的value属性:

<input type="checkbox" name="myCheckbox" value="thisIsChecked" />

现在,您将看到是否使用简单的条件检查它:

if (!empty($_POST['myCheckbox'])) {
   do something; }

您也可以使用PHP使这些属性动态化,就像您已经知道的那样。例如:

<?php foreach ($myArray as $arrayValue) {
echo '<input type="checkbox" name="'.$arrayValue.'" value="thisIsChecked" />
}