J'ai une Drupal 7 méthode d'envoi pour mettre à jour CSV ligne par ligne vers une table personnalisée que j'ai trouvée sous ce lien . J'ai essayé de la mettre à jour pour qu'elle fonctionne en Drupal 8 en vain. Comment puis-je le modifier pour qu'il fonctionne en Drupal 8?
function custom_module_submit($form, &$form_state) {
$file = $form_state['values']['csv_upload_file'];
$file->status = FILE_STATUS_PERMANENT;
$file->filename = str_replace(' ', '_', $file->filename);
file_save($file);
$csv_file = file_load($file->fid);
$file = fopen($csv_file->uri, "r");
while(! feof($file))
{
$customer = fgetcsv($file));
db_insert('your_db_table')
->fields(array(
'column1' => $customer[0],
'column2' => $customer[1]
))
->execute();
}
fclose($file);
drupal_set_message('CSV data added to the database');
}
Le code Drupal 8 que j'essaie d'utiliser est le suivant:
public function submitForm(array &$form, FormStateInterface $form_state)
{
$file = $form_state->getValue('csv_upload');
$file->status = FILE_STATUS_PERMANENT;
$file->filename = str_replace(' ', '_', $file->filename);
file_save_data($file);
$csv_file = \Drupal\file\Entity\File::load($file->fid);
$file = fopen($csv_file->getFileUri(), "r");
while (!feof($file)) {
$customer = fgetcsv($file);
\Drupal::database()->insert('your_db_table')
->fields(array(
'column1' => $customer[0],
'column2' => $customer[1]
))
->execute();
}
fclose($file);
drupal_set_message('CSV data added to the database');
}
Les erreurs incluent:
Ligne 90: $file = fopen($csv_file->getFileUri(), "r");
Ligne 85: $file->status = FILE_STATUS_PERMANENT;
Ligne 86: $file->filename = str_replace(' ', '_', $file->filename);
Ligne 89: $csv_file = \Drupal\file\Entity\File::load($file->fid);
J'ai utilisé le code ci-dessous;
public function submitForm(array &$form, FormStateInterface $form_state)
{
$file = $form_state->getValue('csv_upload_file');
$destination = $file[0]->toArray()['uri'][0]['value'];
$file = fopen($destination, "r");
while (!feof($file)) {
$customer = fgetcsv($file);
\Drupal::database()->insert('your_db_table')
->fields(array(
'column1' => $customer[0],
'column2' => $customer[1]
))
->execute();
}
fclose($file);
drupal_set_message('CSV data added to the database');
}