Индикатор выполнения Yii2 в DetailView

У меня есть требование отображать индикатор выполнения в виджете DetailView. Я искал его, но нашел решения для виджета GridView. Так что я попытался изменить его, но не работал, как ожидалось.

<?=DetailView::widget(
    [
        'model' => $model,
        'attributes' =>
        [
            [
                'attribute' => 'progress',
                'label' => 'Activity Progress',
                'type' => DetailView::INPUT_WIDGET,
                'class' => 'yii\bootstrap\Progress',
                'widgetOptions' =>
                [
                    'percent' => 50,
                    'barOptions' => ['class' => 'progress-bar-info'],
                    'options' => ['id' => 'progBar', 'class' => 'active progress-striped']
                ]
            ]
        ]
    ]
)
?>

person Elamparithi    schedule 06.12.2018    source источник
comment
можете ли вы пометить ответ как правильный, если он вам помог?   -  person Muhammad Omer Aslam    schedule 14.01.2019


Ответы (1)


Вам нужно просто установить столбец format в raw и вернуть вывод виджета из опции value просто, как показано ниже. Я использовал виджет yii\bootstrap\Progress в DetailView

<?php echo DetailView::widget(
    [
        'model' => $model,
        'attributes' =>
        [
            [
                'attribute' => 'progress',
                'label' => 'Activity Progress',
                'format' => 'raw',
                'value' => function ($model) {
                    // striped animated
                    return \yii\bootstrap\Progress::widget(
                        [
                            'percent' => 70,
                            'options' => ['class' => 'progress-success active progress-striped'],
                        ]
                    );
                },
            ],
        ],
    ]
)
?>

Если у вас есть поле в базе данных с именем progress, которое содержит текущий прогресс строки в целочисленном формате, вы можете передать $model->progress параметру percent в виджете yii\bootstrap\Progress, например "percent"=>$model->progress.

person Muhammad Omer Aslam    schedule 06.12.2018