@AlexAll

Как правильно вывести массив в radioList в yii2?

в таблице post есть строка, где хранится массив в json с названием сайтов и их ссылки
После Json::decode этот массив принимает этот вид

array(3) {
[0]=> array(2) {
["title"]=> string(90) "Сайт1"
["link"]=> string(32) "site1.ru"
}
[1]=> array(2) {
["title"]=> string(39) " Сайт2"
["link"]=> string(28) "site2.ru"
}
[2]=> array(2) {
["title"]=> string(56) "Сайт2"
["link"]=> string(27) "site3.ru"
}
}
нужно в форме radioList вывести их списком, чтобы название были кликабельными
вот сама форма, не пойму как правильно воткнуть туда этот массив.

<?= $form->field($model, 'site')->radioList([
    
           //тут должен быть массив
    ],   [
                                'item' => function($index, $label, $name, $checked, $value) {

                                    $return = '<label class="modal-radio">';
                                    $return .= '<input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3">';
                                    $return .= '<i></i>';
                                    $return .= '<span>' . ucwords($label) . '</span>';
                                    $return .= '</label><br/>';

                                    return $return;
                                }
                            ]
                        ); ?>
  • Вопрос задан
  • 603 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
$arr = [
    [
        "title"=> "Сайт1",
        "link"=> "site1.ru"
    ],
    [
        "title"=> " Сайт2",
        "link"=> "site2.ru"
    ],
    [
        "title"=> "Сайт2",
        "link"=> "site3.ru"
    ]
];

<?= $form->field($model, 'email')->radioList(ArrayHelper::map($arr, 'title', 'link'),[
    'item' => function($index, $label, $name, $checked, $value) {
        return '<label class="modal-radio" style="display:block;">
                  <input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3">
                  <i></i>
                  <span>' . ucwords($label) . '</span>
               </label>';
    }
]) ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы