После обновления страницы выпадающий список очищается - PullRequest
0 голосов
/ 20 января 2019

Я использую корзину CodeIgniter.Я получаю данные корзины, такие как

Array
(
    [dc54c1ce61893fa725cf87c9e20b4c78] => Array
        (
            [id] => 1
            [name] => wertoiuy
            [qty] => 1
            [price] => 200
            [options] => Array
                (
                    [duration => 0
                )

            [rowid] => dc54c1ce61893fa725cf87c9e20b4c78
        )

    [e5966e762beda1762e461f27f1dc3ef4] => Array
        (
            [id] => 2
            [name] => qwertf 
            [qty] => 1
            [price] => 100
            [options] => Array
                (
                    [duration] => 6m
                )

            [rowid] => e5966e762beda1762e461f27f1dc3ef4
        )

)

Обратите внимание, что я получаю [duration] => 6m или [duration] => 12m.

длительность, которую я получаю из выпадающего списка.

<select name="yearDropdown"  class="form-control dropdownDuration" >
 <option selected disabled >Select duration</option>  
 <option value="12m">1 Year</option>
 <option value="6m">6 months</option> 
</select>

Теперь, что я делаю, выбрав выпадающий список, я нажал на добавить в корзину.Информация о товаре добавляется в корзину, но когда я обновляю страницу, мой выпадающий список очищается.Я имею в виду, выпадающий снова показывает Select duration.Он должен отображать то, что я выбираю при добавлении товара в корзину.

Я попробовал какой-то код

<?php if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))){
    foreach ($this->cart->contents() as $product) { 
     if ($product['options']['duration'] == '12m') {
            $yearSelected12='selected="selected"';
        }
     if ($product['options']['duration'] == '6m') {
           $yearSelected6='selected="selected"';
        }
          break;

       }
}?>
   <select name="yearDropdown"  class="form-control dropdownDuration" >
    <option selected disabled >Select duration</option>  
    <option value="12m" <?php echo $yearSelected12;?>>1 Year</option>
   <option value="6m" <?php echo $yearSelected6;?>>6 months</option> 
  </select>
<?php }?>

, но он не работает.Любая другая идея, как решить эту проблему?

Не могли бы вы помочь мне в этом вопросе?

После предложенного ответа @Praveen kumar.Я пытался

<?php if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))){
   foreach ($this->cart->contents() as $product) { 
                       //break;
                     } }?>

<select name="memberDuration" class="form-control dropdownDuration">
  <option selected disabled>Select duration</option>
  <option value="12m" <?php if($product['options'][ 'duration']=="12m"){ echo 'selected="selected"';} ?> >1 Year</option>
  <option value="6m" <?php if($product[ 'options'][ 'duration']=="6m" ){ echo 'selected="selected"';} ?>>6 months</option>
</select>

Этот код работает при обновлении, но при начальном этапе я получаю сообщение об ошибке "Неопределенная переменная: продукт".

1 Ответ

0 голосов
/ 20 января 2019

Я чувствую, что что-то не так с:

<?php
if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))) {
  foreach($this->cart->contents() as $product) {
    if ($product['options']['durationActivity'] == '12m') {
      $yearSelected12 = 'selected="selected"';
    }
    if ($product['options']['durationActivity'] == '6m') {
      $yearSelected6 = 'selected="selected"';
    }
    break;
  }
}
?>

Прежде всего, вы не должны добавлять туда break.Во-вторых, я бы предпочел, чтобы у вас было $product на странице, потому что это то, что вы отображаете, и выполните проверку на <option>:

<select name="yearDropdown"  class="form-control dropdownDuration" >
  <option selected disabled >Select duration</option>  
  <option<?php echo ($product["duration"] == "12m") ? ' selected="selected"' : ""; ?> value="12m">1 Year</option>
  <option<?php echo ($product["duration"] == "6m") ? ' selected="selected"' : ""; ?> value="6m">6 months</option> 
</select>

Если честно, $product выше должнобыть гибким с точки зрения:

  1. Должно иметь выбранное по умолчанию значение (не беспокойтесь, если нет).
  2. Должно получить значение, если пользователь изменился с помощью $_POST.

В этом полном сценарии вам не нужен цикл foreach, по моему скромному мнению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...