protected function process($data) { $newId = $this->idMap[$data[0]]; $block = new MatrixBlockModel(); $block->fieldId = 14; $block->ownerId = $newId; $block->typeId = 1; $insertData = ['date' => $data[1], 'type' => $data[2], 'units' => $data[3], 'amount' => $data[4]]; echo PHP_EOL . 'Add data for ' . $newId; print_r($insertData); $block->setContentFromPost($insertData); craft()->matrix->saveBlock($block); }
/** * Get attributes for a Model. * * @param EntryModel/MatrixBlockModel $model * * @return array */ private function _getAttributesForModel($model) { $attributes = array(); $content = $model->getContent()->getAttributes(); $fieldLayout = $model->getFieldLayout(); foreach ($fieldLayout->getFields() as $fieldLayoutField) { $field = $fieldLayoutField->getField(); if ($model->{$field->handle} instanceof ElementCriteriaModel) { if ($field->type == 'Matrix') { $blocks = array(); foreach ($model->{$field->handle}->find() as $matrixBlock) { // Create Matrix Block $newMatrixBlock = new MatrixBlockModel(); $newMatrixBlock->fieldId = $matrixBlock->fieldId; $newMatrixBlock->typeId = $matrixBlock->typeId; $newMatrixBlock->ownerId = null; $newMatrixBlock->locale = $model->locale; // Set content $blockData = $this->_getAttributesForModel($matrixBlock); $newMatrixBlock->setContentFromPost($blockData); // Add block to Matrix Field $blocks[] = $newMatrixBlock; } $attributes[$field->handle] = $blocks; } else { $attributes[$field->handle] = $model->{$field->handle}->ids(); } } else { if (isset($content[$field->handle])) { $attributes[$field->handle] = $content[$field->handle]; } } } return $attributes; }