Ceci est une réponse partielle et nullement complète. Je voudrais également en savoir plus sur ces deux éléments. Cela peut donc faire partie d'une discussion; bien que j'aie écrit comme réponse plutôt que comme commentaire à cause des extraits de code suivants et des exemples de la façon dont j'ai utilisé les classes ci-dessus.
Permettez-moi d'illustrer certaines de mes utilisations prepareRow () as - qui fait ce qu'il dit.
Récemment, je donnais des données à importer à partir d'une base de données non drupale. L'entité à laquelle j'ajoute nécessite la saisie de champs que je n'ai pas dans mon importation de données.
Donc, avant que ma classe source soit créée, je peux ajouter
$source_fields = array(
'changed' => t('Timestamp of when the change was made.'),
'created' => t('Timestamp of when the node was Created.'),
);
puis dans la fonction prepareRow, je peux faire ce qui suit
$nowtimestamp = mktime(date('Y-m-d'));
$row->changed = $nowtimestamp;
$row->created = $nowtimestamp;
vous pouvez également exécuter les instructions php if / else ici si nécessaire.
J'ai également utilisé la fonction prepare dans mon code et je l'utilise pour attribuer des valeurs à l'entité.
$account->field_job_location [und][0]['tid'] = $row->job_location_tid;
Je n'ai eu qu'à l'utiliser dans ce scénario car j'ai créé mon propre plugin de nœud personnalisé.
De plus, si vous avez besoin de faire des calculs à ce sujet, vous pouvez le faire dans prepareRow qui s'exécute avant prepare ()
Par exemple, lors de l'importation, j'avais une valeur intitulée «Ville» - et je pouvais en faire un identifiant de terme.
if ($TownCity == 'London' ){
$row->job_location_tid = '10';
} else {
$row->job_location_tid = '11';
}
J'espère que ça aide.