вопрос по работе с CheckBoxList

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
dsn
Сообщения: 64
Зарегистрирован: 2011.05.11, 11:28
Контактная информация:

вопрос по работе с CheckBoxList

Сообщение dsn »

Добрый день! у меня вот такая задача есть форма и список CheckBox-ов которые нужно вывести на ней, причем форма сложная тем что часть чекбоксов нужно вывести в одной части формы а др часть этих же чекбоксов в др. части формы
я уже попробовал данный вариант

Код: Выделить всё

<?php echo $form->CheckBoxList($model,'media', array_slice($Dop->media, 0, 4, true));?>
все работает - здесь я вывожу часть масива $Dop->media во второй части формы если я вывожу оставшуюся часть массива всешне то все нормально но id у input и label - такие же как и у первого выведенного мной CheckBoxList, есть ли какие нить варианты решения данной проблемы?!
Кулинарные рецепты с фото на food-list.ru
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: вопрос по работе с CheckBoxList

Сообщение esche »

В htmlOptions можно уникальный id задать.
...
dsn
Сообщения: 64
Зарегистрирован: 2011.05.11, 11:28
Контактная информация:

Re: вопрос по работе с CheckBoxList

Сообщение dsn »

esche писал(а):В htmlOptions можно уникальный id задать.
я был бы весьма признателен если бы вы пример показали того как все это реализовать?

на данный момент у меня получается следующая картина

Код: Выделить всё

<tr>
    <td class="flabel top pr_5"><?php echo $form->labelEx($model,'outside'); ?></td>
    <td>
        <div class="chcol2">
            <?php echo $form->CheckBoxList($model,'outside', array_slice($Dop->outside, 0, 5, true));?>
        </div>
        <div class="chcol2">
            <?php echo $form->CheckBoxList($model,'outside', array_slice($Dop->outside, 5, 10, true));?>
        </div>
    </td>
</tr>
и вот результат этого безобразия

Код: Выделить всё

<tr>
    <td class="flabel top pr_5"><label for="Auto_outside">Снаружи</label></td>
    <td>
        <div class="chcol2">
            <input type="hidden" name="Auto[outside]" value="" id="ytAuto_outside"><span id="Auto_outside">
            <input type="checkbox" name="Auto[outside][]" value="1" id="Auto_outside_0"> <label for="Auto_outside_0">литые диски</label><br>
            <input type="checkbox" name="Auto[outside][]" value="2" id="Auto_outside_1"> <label for="Auto_outside_1">тонировка</label><br>
            <input type="checkbox" name="Auto[outside][]" value="3" id="Auto_outside_2"> <label for="Auto_outside_2">люк</label><br>
            <input type="checkbox" name="Auto[outside][]" value="4" id="Auto_outside_3"> <label for="Auto_outside_3">кенгурятник</label><br>
            <input type="checkbox" name="Auto[outside][]" value="5" id="Auto_outside_4"> <label for="Auto_outside_4">спойлер</label></span>
        </div>
        <div class="chcol2">
            <input type="hidden" name="Auto[outside]" value="" id="ytAuto_outside"><span id="Auto_outside">
            <input type="checkbox" name="Auto[outside][]" value="6" id="Auto_outside_0"> <label for="Auto_outside_0">обвес</label><br>
            <input type="checkbox" name="Auto[outside][]" value="7" id="Auto_outside_1"> <label for="Auto_outside_1">лебёдка</label><br>
            <input type="checkbox" name="Auto[outside][]" value="8" id="Auto_outside_2"> <label for="Auto_outside_2">ветровики</label><br>
            <input type="checkbox" name="Auto[outside][]" value="9" id="Auto_outside_3"> <label for="Auto_outside_3">рейлинги</label><br>
            <input type="checkbox" name="Auto[outside][]" value="10" id="Auto_outside_4"> <label for="Auto_outside_4">багажник</label></span>
        </div>
    </td>
</tr>
 
как видно - все удовлетворяет - кроме как id у инпута и у лайбла
на данный момент я решил проблему следующим способом

Код: Выделить всё

<tr>
    <td class="flabel top pr_5"><?php echo $form->labelEx($model,'outside'); ?></td>
    <td>
        <div class="chcol2">
            <?php 
                for ($i = 1; $i <= 5; $i++) {
                    echo "<p>".$form->checkBox($model, 'outside', array('id'=>'outside_'.$i, 'name'=>'Auto[outside][]', 'value'=>$i, 'uncheckValue'=>''));
                    echo "<label for=\"outside_$i\">".$Dop->outside[$i]."</label></p>";
                }
            ?>
        </div>
        <div class="chcol2">
            <?php 
                for ($i = 6; $i <= 10; $i++) {
                    echo "<p>".$form->checkBox($model, 'outside', array('id'=>'outside_'.$i, 'name'=>'Auto[outside][]', 'value'=>$i, 'uncheckValue'=>''));
                    echo "<label for=\"outside_$i\">".$Dop->outside[$i]."</label></p>";
                }
            ?>
        </div>
    </td>
</tr>
- но это я так считаю не самый правильный вариант, - быть может у кого есть др идеи, более правильные и менее громозские...???
Кулинарные рецепты с фото на food-list.ru
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: вопрос по работе с CheckBoxList

Сообщение esche »

dsn писал(а):
esche писал(а):В htmlOptions можно уникальный id задать.
я был бы весьма признателен если бы вы пример показали того как все это реализовать?
Ан нет, ввёл в заблуждение.. Для каждого чекбокса в автоматически генерируемом списке id задать не получится.. Вторую порцию можно выводить по-одному (если и label и checkbox выводить методами CHtml - имхо будет смотреться лучше).

Если задача стоит вывести в два столбца - можно задать шаблон

Код: Выделить всё

<?php echo $form->CheckBoxList($model,'outside', array_slice($Dop->outside, 0, 5, true),array('template'=>'<p>{input} {label}</p>'));?>
а в стилях (если всё это дело положить, например в <div class="checkboxlist">)

Код: Выделить всё

.checkboxlist p {width:50%; float:left;}
...
dsn
Сообщения: 64
Зарегистрирован: 2011.05.11, 11:28
Контактная информация:

Re: вопрос по работе с CheckBoxList

Сообщение dsn »

спасибо - есть теперь над чем подумать... хотя я думал обойтись без использования CSS но да ладно, не буду замачиваться себе и др голову...
Кулинарные рецепты с фото на food-list.ru
Ответить