Ситуация крайне непонятная, прошу помощи, уважаемые гуру yii2!
Я формирую значение поля 'value' для ячейки таблицы через функцию, сама ячейка при этом в формате 'raw' :
Код: Выделить всё
$value = (function($model, $key, $index, $widget) use ($pnotifyDelay, $pjaxDelay, $modalID) {
....
}
Код: Выделить всё
$model->id,
Если я вывожу на посмотреть эти id так:
Код: Выделить всё
print_r('$model->id : ' . $model->id . ' - столбец 1 ; ');
Код: Выделить всё
$model->id : 30 - столбец 1 ; $model->id : 37 - столбец 1 ; $model->id : 39 - столбец 1 ;
Код: Выделить всё
'uploadExtraData' => [
'attribute' => $widget->attribute,
'id' => $model->id,
'modalID' => $modalID,
],
Как так может быть, что при генерации 'value ' для каждой модели в отладке я вижу изменяемый id, а при передаче в виджет он не обновляется?!
Полных код формирования 'value':
Код: Выделить всё
$modalID = '#modalFileUpload1';
$value = (function($model, $key, $index, $widget) use ($pnotifyDelay, $pjaxDelay, $modalID) {
print_r('$model->id : ' . $model->id . ' : 1 строка ; ');
return
$model[$widget->attribute]
.
'<p>'
.
Html::tag("a", "<i class='fa fa-download'></i> Загрузить ", ["class" => "btn btn-primary", "data-toggle" => "modal", "href" => $modalID])
.
'</p>'
.
'<div class="modal fade" id="modalFileUpload1" tabindex="-1" role="dialog">'
.
'<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Добавь файл</h4>
</div>
<div class="modal-body">'
.
FileInput::widget([
'name' => $widget->attribute . $model->id,
'language' => 'ru',
'options'=>[
'multiple' => false
],
'pluginOptions' => [
'previewFileType' => 'any',
'uploadUrl' => "index.php?r=site/uploadmodal",
'uploadExtraData' => [
'attribute' => $widget->attribute,
'id' => $model->id,
'modalID' => $modalID,
],
],
'pluginEvents' => [
'fileuploaded'=>"function(event, data, previewId, index, fileId){
var datas = data.response.files[0];
new PNotify({
title : datas.message,
type : datas.type,
text : datas.filename,
styling : 'bootstrap3',
delay : $pnotifyDelay,
});
$(datas.modalID).modal('hide');
setTimeout(() => { $.pjax.reload({container: datas.pjaxTarget, async:false, timeout: false}); }, $pjaxDelay);
}",
]
])
.
'</div>
</div>
</div>
</div>';
});
Спасибо!