ArrayDataProvider редактировать значение в GridView

В моем коде я хочу редактировать значения. Я пытаюсь $ модель, но она работает только в ActiveDataProvider. Когда я использую $ data, проблема та же — результат равен 0.

<?= GridView::widget(
[
'dataProvider' => $dataProvider,
'tableOptions' => ['class' => 'table table-hover show-products'],
'columns'      => [
[
'attribute' => 'price',
'label'     => 'Price',
'format'    => 'html',
'value'     => function ($data) {
return '<div class="product-list-row">' . str_replace(
'.', ",", $data->price / 100
) . ' USD</div>';
},
],
[
'attribute' => 'total',
'format'    => 'html',
'value'     => function ($model) {
return '<div class="product-list-row">' . str_replace(
'.', ",", $model->price / 100 * $model->amount
) . ' PLN</div>';
},
],
],
]
); ?>

и мой результат по цене и итогу равен 0. В ActiveDataProvider использование $ model работает, но в моем коде не работает. Пожалуйста, помогите мне. Как я могу изменить мою цену или общую стоимость?

контроллер

public function actionShowCart()
{

$dataProvider = new ArrayDataProvider([
'allModels' =>Yii::$app->session->get('cart'),
'sort'=>false,
'pagination' => [
'pageSize' => 10,
],
]);return $this->render('showCart', [
'dataProvider' => $dataProvider,
]);
}

мой сеанс var_dump ()

array(2) { [64]=> array(4) { ["id"]=> int(64) ["amount"]=> int(1) ["name"]=> string(12) "PRODUCT A" ["price"]=> string(4) "0.06" } [2159]=> array(4) { ["id"]=> int(2159) ["amount"]=> int(1) ["name"]=> string(15) "PRODUCS D" ["price"]=> string(5) "15.20" } }

0

Решение

Я нахожу ответ!

Я должен использовать $ data в качестве массива!

[
'attribute' => 'total',
'format' => 'html',
'value' => function ($data) {
return str_replace('.', ",", $data['price']*$data['amount']).' USD';
},
],
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector