Изменение радиолиста на выпадающий - PullRequest
0 голосов
/ 07 апреля 2020

Я застрял; / У меня есть activeradiolist и он работает нормально, но мне нужно создать еще один список с моим выпадающим списком. Мой код с $ model для activeradioList

    echo Html::activeradioList($add, 'type_contact',
    $items, ['item' => function ($index, $label, $name, $checked, $value) {
        $return = '<div style="max-height:178px!important;" class="radio col-xs-12 col-lg-6"><input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3" id="' . $name . $index . '" ' . ($checked ? 'checked' : '') . '>';
        $return .= '<label style="padding-top:0!important" for="' . $name . $index . '">' . $label . '</label></div>';
        if ($checked && $index === 1) {
            $return .= '<script>$(document).ready(function(){$(\'#ref-form\').slideDown()});</script>';
        }

        return $return;
    }]
); ?>

Теперь я пытаюсь преобразовать это в dropdownList например ->

        echo CHtml::dropDownList($add, 'type_contact',
    $items, ['item' => function ($index, $label, $name, $checked, $value) {
        $return = '<div style="max-height:178px!important;" class="radio col-xs-12 col-lg-6"><input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3" id="' . $name . $index . '" ' . ($checked ? 'checked' : '') . '>';
        $return .= '<label style="padding-top:0!important" for="' . $name . $index . '">' . $label . '</label></div>';
        if ($checked && $index === 1) {
            $return .= '<script>$(document).ready(function(){$(\'#ref-form\').slideDown()});</script>';
        }

        return $return;
    }]
); ?>

и htmlspecialchars () ожидает, что параметр 1 будет строкой, объект задан

1 Ответ

0 голосов
/ 08 апреля 2020

1) CHtml - это класс из старой платформы Yii 1.x. Yii2 не использует префикс C для имен своих классов.

2) Вы связываете поле формы с экземпляром модели, поэтому вместо dropDownList(). * 1006 следует использовать метод activeDropDownList(). *

3) В опциях вашей радиокнопки у вас есть обратный вызов item, который используется для генерации кода html для радиокнопки. В выпадающем списке нет ничего подобного, поэтому вы должны удалить его из его параметров. Вы можете полностью опустить четвертый параметр, потому что здесь есть только функция обратного вызова элемента.

Таким образом, код для выпадающего списка должен выглядеть следующим образом:

echo Html::activeDropDownList($add, 'type_contact', $items);
...