Submitted by NarOneR on
Bonjour à tous,
Je voudrais générer une entité qui contient une image générer par un autre module.
Voici mon code :
global $user;
$apercu = $_SESSION['image_generate'];
$file_apercu = new StdClass();
$file_apercu->uid = $user->uid;
$file_apercu->uri = $apercu;
$file_apercu->filemime = file_get_mimetype($file_apercu->uri);
$file_apercu->status = 1;
$form_panier = $_SESSION['form_state_panier'];
$sql = db_query('SELECT MAX("order_id")
FROM commerce_order
WHERE uid = '.$user->uid.'')->fetchAssoc();
$values = array(
'type' => 'commandeflyer',
'uid' => intval($user->uid),
'status' => 1,
'comment' => 0,
'promote' => 0,
);
$entity = entity_create('node', $values);
$ewrapper = entity_metadata_wrapper('node', $entity);
$ewrapper->title->set('commandeflyer'.$sql['MAX("order_id")']);
$ewrapper->field_flyer_image_commande['und'][0] = (array)$file_apercu;
$ewrapper->field_numcommande->set(intval($sql['MAX("order_id")']));
$ewrapper->save(true);
entity_save('node', $entity);
Quand j’exécute ce code j'obtient un écran blanc.
Merci d'avance pour l'aide.
Bon j'ai un peu avancé mais
Permalien Soumis par NarOneR le 9 Décembre, 2013 - 16:49
Bon j'ai un peu avancé mais ça ne marche toujours pas.
voici mon nouveau code :
global $user;
$apercu = $_SESSION['image_generate'];
$file_apercu = new StdClass();
$file_apercu->uid = $user->uid;
$file_apercu->uri = $apercu;
$file_apercu->filemime = file_get_mimetype($file_apercu->uri);
$file_apercu->status = 1;
$file_apercu = file_save($file_apercu);
$file_apercu = (array) $file_apercu;
$file_apercu = array($file_apercu);
$pdf = $_SESSION['pdf']->uri;
$file_pdf = new StdClass();
$file_pdf->uid = $user->uid;
$file_pdf->uri = $pdf;
$file_pdf->filemime = file_get_mimetype($file_pdf->uri);
$file_pdf->status = 1;
$file_pdf = file_save($file_pdf);
$file_pdf = (array) $file_pdf;
$file_pdf = array($file_pdf);
$form_panier = $_SESSION['form_state_panier'];
$sql = db_query('SELECT MAX("order_id")
FROM commerce_order
WHERE uid = '.$user->uid.'')->fetchAssoc();
$values = array(
'type' => 'commandeflyer',
'uid' => intval($user->uid),
'status' => 1,
'comment' => 0,
'promote' => 0,
);
$entity = entity_create('node', $values);
$ewrapper = entity_metadata_wrapper('node', $entity);
$ewrapper->title->set('commandeflyer'.$sql['MAX("order_id")']);
$ewrapper->field_flyer_image_commande->set($file_apercu);
$ewrapper->field_pdf->set($file_pdf);
$ewrapper->field_numcommande->set(intval($sql['MAX("order_id")']));
$ewrapper->save(true);
entity_save('node', $entity);
Et j'obtient le code d'erreur suivant :
EntityMetadataWrapperException : Invalid data value given. Be sure it matches the required data type and format. dans EntityMetadataWrapper->set() (ligne 122 dans /var/www/commerce_kickstart-7.x-2.9/profiles/commerce_kickstart/modules/contrib/entity/includes/entity.wrapper.inc).
Pourtant mes types correspondes bien.
Solution trouvé pour ceux qui
Permalien Soumis par NarOneR le 10 Décembre, 2013 - 14:29
Solution trouvé pour ceux qui aurait le problème :
//appel de la variable user
global $user;
//recuperation de lapercu
$apercu = $_SESSION['image_generate'];
//creation de lobject file
$file_apercu = new StdClass();
$file_apercu->uid = $user->uid;
$file_apercu->uri = $apercu;
$file_apercu->filename = basename($file_apercu->uri);
$file_apercu->filemime = file_get_mimetype($file_apercu->uri);
$file_apercu->status = 1;
//sauvegarde en base
$file_apercu = file_save($file_apercu);
//recuperation du pdf
$pdf = $_SESSION['pdf']->uri;
//creation de lobject file
$file_pdf = new StdClass();
$file_pdf->uid = $user->uid;
$file_pdf->uri = $pdf;
$file_pdf->filename = basename($file_pdf->uri);
$file_pdf->filemime = file_get_mimetype($file_pdf->uri);
$file_pdf->status = 1;
//sauvegarde en base
$file_pdf = file_save($file_pdf);
//recuperation du numero de commande
$form_panier = $_SESSION['form_state_panier'];
$sql = db_query('SELECT MAX("order_id")
FROM commerce_order
WHERE uid = '.$user->uid.'')->fetchAssoc();
//creation de lentity
$values = array(
'type' => 'commandeflyer',
'uid' => intval($user->uid),
'status' => 1,
'comment' => 0,
'promote' => 0,
);
//creation dentity sans limage et le pdf
$entity = entity_create('node', $values);
$ewrapper = entity_metadata_wrapper('node', $entity);
$ewrapper->title->set('commandeflyer'.$sql['MAX("order_id")']);
$ewrapper->field_numcommande->set(intval($sql['MAX("order_id")']));
$ewrapper->save(true);
entity_save('node', $entity);
//chargement de lentity
$commandeflyer = node_load($nid = $entity->nid, $vid = NULL, $reset = FALSE);
//ajout image
$commandeflyer->field_flyer_image_commande[LANGUAGE_NONE][] = array(
'fid' => $file_apercu->fid,
'uid' => $file_apercu->uid,
'uri' => $file_apercu->uri,
'filename' => $file_apercu->filename,
'filemime' => $file_apercu->filemime,
'status' => $file_apercu->status
);
//ajout pdf
$commandeflyer->field_pdf[LANGUAGE_NONE][] = array(
'fid' => $file_pdf->fid,
'display' => '1',
'uid' => $file_pdf->uid,
'uri' => $file_pdf->uri,
'filename' => $file_pdf->filename,
'filemime' => $file_pdf->filemime,
'status' => $file_pdf->status
);
//save entity
node_save($commandeflyer);