diff --git a/demos/collection/test.php b/demos/collection/test.php new file mode 100644 index 0000000000..07fcf79112 --- /dev/null +++ b/demos/collection/test.php @@ -0,0 +1,29 @@ +db); +$m->addField('flag', [ + 'neverPersist' => true, // no need for actual value in this field + 'ui' => [ + 'table' => [ + Table\Column\CountryFlag::class, + [ + 'codeField' => $m->fieldName()->iso, + 'nameField' => $m->fieldName()->name, + ], + ], + ], +]); + +$e = $m->loadAny(); +$t = CardTable::addTo($app); +$t->setModel($e); diff --git a/src/CardTable.php b/src/CardTable.php index 3b048fcb74..338366764c 100644 --- a/src/CardTable.php +++ b/src/CardTable.php @@ -34,17 +34,20 @@ public function setModel(Model $model, array $columns = null): void } $data = []; - foreach ($model->get() as $key => $value) { - if (in_array($key, $columns, true)) { + foreach (array_keys($model->get()) as $fieldName) { + if (in_array($fieldName, $columns, true)) { $data[] = [ - 'id' => $key, - 'field' => $model->getField($key)->getCaption(), - 'value' => $this->getApp()->uiPersistence->typecastSaveField($model->getField($key), $value), + 'id' => $fieldName, + 'field' => $model->getField($fieldName)->getCaption(), + 'value' => new Model\EntityFieldPair($model, $fieldName), ]; } } $this->_bypass = true; + + parent::setSource($data); + /* $mm = parent::setSource($data); $this->addDecorator('value', [Table\Column\Multiformat::class, function (Model $row) use ($model) { $field = $model->getField($row->getId()); @@ -58,6 +61,8 @@ public function setModel(Model $model, array $columns = null): void return [$ret]; }]); + */ + $this->_bypass = false; } }