@Jorupbek

Как вывести на странице сайта значения бд (dropdowlist) в текстовом формате?

На сайте страницы должен выводится значения текста а не значения из бд
Например На сайте должен выводится значение Лейтенант вместо '1'

<?php

$items = [
'Звание' => [
'0' => 'мл.Лейтенант',
'1' => 'Лейтенант',
'2' => 'ст.Лейтенант',
'3' => 'Капитан',
'4' => 'Майор',
'5' => 'п.Полковник',
'6' => 'Полковник',
],
];
$params = [
'prompt' => 'Выберите статус...',
];
echo $form->field($model, 'hit')->dropDownList($items,$params);

?>
  • Вопрос задан
  • 388 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Вроде так должно быть:
$form->field($model, 'hit')->dropDownList(ArrayHelper::map($items, 'id', 'name'), ['prompt' => 'Select'])

Если из базы Вы получаете только целое число и хотите сопоставить с текстом, то в модели создайте публичный статический метод, который будет возвращать массив. Практически такой, как Вы сделали.
// В моделе
public static function getItems()
{
return [
'0' => 'мл.Лейтенант',
'1' => 'Лейтенант',
'2' => 'ст.Лейтенант',
'3' => 'Капитан',
'4' => 'Майор',
'5' => 'п.Полковник',
'6' => 'Полковник',
];
// В представлении
$form->field($model, 'hit')->dropDownList(ModelName::getItems(), ['prompt' => 'Select'])
Ответ написан
@Jorupbek Автор вопроса
slo_nik:
modules/admin/views/product/_form.php
<?php
                    
                    $items = [
                    'Звание' => [
                    '0' => 'мл.Лейтенант',
                    '1' => 'Лейтенант',
                    '2' => 'ст.Лейтенант',
                    '3' => 'Капитан',
                    '4' => 'Майор',
                    '5' => 'п.Полковник',
                    '6' => 'Полковник',
                    ],
                    ];
                    $params = [
                    'prompt' => 'Выберите статус...',
                    ];
                    echo $form->field($model, 'hit')->dropDownList($items,$params);
                    
                    ?>
                    <!-- Выпадающий список-->

modules/admin/views/product/view.php
<?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            // 'id',
            // 'category_id',
             [
            'attribute' => 'category_id',
            'value' => function ($data) {
                    return $data->category->name;
            },
            ],
            'name',
            'date',
            'content:html',
            'dolzhnost',
            'datestart',
            'dateend',
            // 'price',
            'keywords:html',
            'description:html',
            [
                'attribute' => 'image',
                'value' => "<img src='{$img->getUrl()} '>",
                'format' => 'html',
            ],
            'hit:html',  //modules/admin/views/product/view.php 54 строка
            'year',
        ],
    ]) ?>


views/product/view.php
<p><b>Звание: </b><?= $product->hit?></p>
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы