Yii2 Gridview значения текущей строки

Я новичок в Yii2. У меня есть gridview, где 2 столбца генерируются автоматически (не в классе модели). В каждой строке есть кнопка, по нажатию которой я хочу получить доступ к текущим значениям ячеек строки и выполнить некоторые вычисления.

Я не могу использовать $data поскольку это относится только к текущей строке модели. ниже мой код:

<?php

echo GridView::widget([
'dataProvider' => $model->getInsuredCompanyVehiclesArrayDataProvider(),
'filterModel' => $model->getInsuredCompanyVehiclesArrayDataProvider(),
'columns' => [
[
'label' => 'Amount',
'format' => 'raw',
'value' => function ($data) {
return $data->rate * Yii::$app->session->get('motorInsuranceEntry')->sumInsured/100;
},
],
[
'label'=>'Total',
'format' => 'raw',
'value' => function ($model, $key, $index, $column) {
//return $data->rate * Yii::$app->session->get('motorInsuranceEntry')->sumInsured/100 + $model->amount;

return '' . $column ;
},
],
],
]); ?>

amount а также Total значения столбца рассчитываются динамически, но я не могу получить доступ к этим значениям в других ячейках 🙁

0

Решение

Как вы, возможно, уже знаете из-за того, что столбцы динамически, вы не можете получить к ним доступ из других столбцов.

Я бы создал функции для обоих динамически столбцов (Amount и Total) в классе модели, чтобы вычислить ваши динамически столбцы. И после того, как вы нажмете свою кнопку в строке, обновите сетку с помощью Pajax.

Вы также можете добавить дополнительные данные в сетку, как указано выше. Вот

либо расширьте свою модель gridview, либо используйте встроенные функции (требуется PHP 5.3+).
Но тогда вы также должны снова вычислить значение каждого столбца, если они полностью динамически для каждой строки.

Но я думаю, ваша простая ошибка в том, что вы используете один раз

'value' => function ($data) {

а в другой раз

'value' => function ($model, $key, $index, $column) {

Обе функции верны. Один раз вы передаете модель функции с помощью параметра «name» $ data, а другой раз — с помощью «name» $ model.
Внутри функции у вас есть доступ только к параметрам, которые передаются в функцию.

Ваш второй встроенный код функции должен использовать $ model вместо $ data (имя первого параметра — модель).

 return $model->rate * Yii::$app->session->get('motorInsuranceEntry')->sumInsured/100 + $model->amount;

Но, как я уже говорил, я бы создал функцию в вашем классе Model

public function getAmount() {
return $this->rate * Yii::$app->session->get('motorInsuranceEntry')->sumInsured/100;
}

Что я не понимаю, так это то, что ваш Итог — это всего лишь сумма * 2?
Но я думаю, что это был просто тестовый код.

0

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

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

По вопросам рекламы [email protected]