DenKuzmin Posted May 6, 2022 at 05:18 PM Share Posted May 6, 2022 at 05:18 PM Подскажите, как в один контейнер вывести несколько определённых опций (если они есть)?Хочу получить такое: <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 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted May 6, 2022 at 07:37 PM Share Posted May 6, 2022 at 07:37 PM Вот так: <?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 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted May 6, 2022 at 07:40 PM Share Posted May 6, 2022 at 07:40 PM Но тут есть некоторые моменты. Если опций выбранных типов не будет, но будут другие опции, то получим пустой div.options Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия: <?php if ($options) { ?> Например так: <?php if ($options_some_group) { ?> Тогда ещё не будет гоняться перебор опций при выводе, если в наборе нет нужных вариантов. 2 Quote Link to comment Share on other sites More sharing options...
DenKuzmin Posted May 7, 2022 at 09:58 AM Author Share Posted May 7, 2022 at 09:58 AM В 06.05.2022 в 22:40, mpn2005 сказал: Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия: Спасибо большое за подсказку! Скажите, пожалуйста, как завести в в контроллере свой признак? Вернее как выбрать в эту новую группу определённые опции? 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted May 7, 2022 at 12:44 PM Share Posted May 7, 2022 at 12:44 PM В 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 Quote Link to comment Share on other sites More sharing options...
DenKuzmin Posted May 10, 2022 at 11:08 AM Author Share Posted May 10, 2022 at 11:08 AM В 07.05.2022 в 15:44, mpn2005 сказал: И взводим наш признак по нужному условию. Спасибо большое! Всё супер! Всё получилось. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.