Les RowImportTransformer

Les RowTransformer doivent respecter une Interface RowImportTransformer
use fractalCms\importExport\interfaces\RowImportTransformer as RowImportTransformerInterface;
final class ImportRowTransformer implements RowImportTransformerInterface
{
/**
* @return string
*/
public function getName(): string
{
return 'nom-1';
}
/**
* @param array $row
* @param ImportContext $context
* @return RowTransformerResult
*/
public function transformRow(array $row, ImportContext $context): RowTransformerResult
{
try {
/**
* Ici le code de traitement de la ligne avant l'import
*
**/
return new RowTransformerResult($row, true);
} catch (Exception $e) {
Yii::error($e->getMessage(), __METHOD__);
throw $e;
}
}
}Afin de pouvoir l'utiliser, le RowImportTransformer doit être ajouté dans la configuration de l'application
'fractal-cms-export' => [
'class' => \fractalCms\importExport\Module::class,
'pathsNamespacesModels' => [
'@app/models' => 'app\\models\\', /*path des models active record de votre application*/
],
/*Ajout de transformer de ligne (RowTransformer)*/
'rowTransformers' => [
/* Pour les configurations import*/
'import' => [
'nom-1' => [
'class' => ImportRowTransformer::class,
'label' => 'Nom 1 (Import)',
],
],
],
],il suffit ensuite de le sélectionner dans le formulaire pour que toutes les lignes soient traitées par le transformer.
Les RowExportTransformers

Les RowExportTransformer doivent réspecter une Interface RowExportTransformer
use fractalCms\importExport\interfaces\RowExportTransformer as RowExportTransformerInterface;
final class ExportRowTransformer implements RowExportTransformerInterface
{
/**
* @return string
*/
public function getName(): string
{
return 'nom-2';
}
/**
* @param array $row
* @param ExportContext $context
* @return RowTransformerResult
*/
public function transformRow(array $row, ExportContext $context): RowTransformerResult
{
try {
/**
* Icic le code de traitement de la ligne avant de l'écrire dans le fichier
*
**/
$context->writeRow(sheet: 'structure',row: $row,startRow: $context->rowNumber);
return new RowTransformerResult($row, true);
} catch (Exception $e) {
Yii::error($e->getMessage(), __METHOD__);
throw $e;
}
}
}Afin de pouvoir l'utiliser, le RowExportTransformer doit être ajouté dans la configuration de l'application
'fractal-cms-export' => [
'class' => \fractalCms\importExport\Module::class,
'pathsNamespacesModels' => [
'@app/models' => 'app\\models\\', /*path des models active record de votre application*/
],
/*Ajout de transformer de ligne (RowTransformer)*/
'rowTransformers' => [
/* Pour les configurations import*/
'import' => [
'nom-1' => [
'class' => ImportRowTransformer::class,
'label' => 'Nom 1 (Import)',
],
],
/* Pour les configurations export*/
'export' => [
'nom-1' => [
'class' => ExportRowTransformer::class,
'label' => 'Nom 1 (export)',
],
],
],
],il suffit ensuite de le sélectionner dans le formulaire pour que toutes les lignes soient traitées par le transformer.