DenKuzmin Опубликовано 6.05.2022 в 17:18 Поделиться Опубликовано 6.05.2022 в 17:18 Подскажите, как в один контейнер вывести несколько определённых опций (если они есть)?Хочу получить такое: <div class="options"> <div class="option-1"> Опция ID1 </div> <div class="option-2"> Опция ID3 </div> </div> Пробовал так <?php if ($options) { ?> <?php foreach ($options as $option) { ?> <?php if ($option['type'] == 'checkbox') { ?> <div class="options"> <?php if ($option['option_id'] == '1' || $option['option_id'] == '2') { ?> <div class="option-<?php echo $option['option_id'] ?>"> Опция ID<?php echo $option['option_id'] ?> </div> <?php } ?> </div> <?php } ?> <?php } ?> <?php } ?> Но получил результат <div class="options"> <div class="option-1"> Опция-1 </div> </div> <div class="options"> <div class="option-2"> Опция-2 </div> </div> 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 6.05.2022 в 19:37 Поделиться Опубликовано 6.05.2022 в 19:37 Вот так: <?php if ($options) { ?> <div class="options"> <?php foreach ($options as $option) { ?> <?php if ($option['type'] == 'checkbox') { ?> <?php if ($option['option_id'] == '1' || $option['option_id'] == '2') { ?> <div class="option-<?php echo $option['option_id'] ?>"> Опция ID<?php echo $option['option_id'] ?> </div> <?php } ?> <?php } ?> <?php } ?> </div> <?php } ?> За цикл опций вынесен вот этот DIV <div class="options"> 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 6.05.2022 в 19:40 Поделиться Опубликовано 6.05.2022 в 19:40 Но тут есть некоторые моменты. Если опций выбранных типов не будет, но будут другие опции, то получим пустой div.options Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия: <?php if ($options) { ?> Например так: <?php if ($options_some_group) { ?> Тогда ещё не будет гоняться перебор опций при выводе, если в наборе нет нужных вариантов. 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
DenKuzmin Опубликовано 7.05.2022 в 09:58 Автор Поделиться Опубликовано 7.05.2022 в 09:58 В 06.05.2022 в 22:40, mpn2005 сказал: Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия: Спасибо большое за подсказку! Скажите, пожалуйста, как завести в в контроллере свой признак? Вернее как выбрать в эту новую группу определённые опции? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 7.05.2022 в 12:44 Поделиться Опубликовано 7.05.2022 в 12:44 В 07.05.2022 в 12:58, DenKuzmin сказал: Скажите, пожалуйста, как завести в в контроллере свой признак? Вернее как выбрать в эту новую группу определённые опции? Тут не совсем подходит термин "Выбрать". Саму выборку тут не надо трогать. Надо просто в цикле перебора добавить проверку, есть ли опции по нужному критерию. И если есть, то передать этот признак в шаблон. В контроллере товара после строки: $data['options'] = array(); Добавляем: $data['options_some_group'] = false; Это мы сбросили признак, перед началом перебора. Потом перед вот этой строкой: foreach ($option['product_option_value'] as $option_value) { Добавляем нужное условие: if ($option['type'] == 'checkbox' && in_array($option['option_id'], array(1,2,3))) { $data['options_some_group'] = true; } И взводим наш признак по нужному условию. В примере признак будет выставлен, если есть опции с типом 'checkbox' и option_id попадает в массив array(1,2,3) Тут, естественно, надо условие заменить на своё. 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
DenKuzmin Опубликовано 10.05.2022 в 11:08 Автор Поделиться Опубликовано 10.05.2022 в 11:08 В 07.05.2022 в 15:44, mpn2005 сказал: И взводим наш признак по нужному условию. Спасибо большое! Всё супер! Всё получилось. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.