Catégories:
J’ai créer un module contenant un formulaire que j’ai codé, comment je peut faire pour enregistrer les champs de mon formulaire dans un content créer sur mon site, je ne trouve pas la fonction.
Merci pour vos réponses.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Salut snis,
Si j’ai bien compris ton soucis, tu as implémenté un hook_form et tu désires injecter les infos récupérées au travers de ton formulaire, dans un type de contenu existant sur ton site. Une piste que je peux te proposer, serait de conserver tes infos de formulaires via un variable_set(‘nom_variable’, valeur_variable) puis tu la récupèreras dans ton content type via un variable_get.
Souhiji
souhiji
58
C’est exactement ça, par contre j’ai une question avec la solution que tu propose. Si j’ai bien compris, au moment ou l’utilisateur valide mon formulaire, je fais appel à la page internet pour créer mon content, je récupére les valeurs au travers du variable_set et l’utilisateur doit de nouveau valider le formulaire pour sauvegarder définitivement les données ?
Si c’est le cas, ça me pose deux problèmes :
- l’utilisateur doit valider deux fois le formulaire pour sauvegarder les données.
- je voulais utilisé mon formulaire pour créer deux contents, avec référence, pour faciliter la saisi pour un utilisateur lambda.
snis
11
En fait, ton formulaire étant déclaré dans ton hook_form(), validé au travers de ton hook_validate() (remarque si ta pas de vérification très spécifique tu peux te passer de cette étape), et soumis (donc enregistré dans ta base de donnée), la piste que je te proposait était de récupérer tes infos juste avant qu’ils ne soient sauvegardez en base, de les sérialiser via la fonction variable_set. Une fois cela fait, via un hook_nodeapi(), au sein duquel sur fera une identification ($node->type == ‘type de nœud desiré’), puis pour tous les nœuds de ce type, tu t’aideras du switch sur le $op pour déterminer l’action appropriée à effectuer.
<?phpfunction mon_module_form($form_state){
$form['name'] = array(
'#type' => 'textfield',
...
return $form;
}
function
mon_module_form_validate($form, &$form_state){if ($form_state['values']['name'] == '') {
form_set_error('', t('Your warning message here'));
}
...
}
function
mon_module_form_submit($form, &$form_state){//ICI tu peux récuperer les valeurs spécifiques souhaités et contenues dans ton //form_state
//par exple: drupal_set('nom_de_variable', $form_state);
db_query("INSERT INTO {table} (name) VALUES ('%s')", $form_state['values']['name']);
drupal_set_message(t('Your form has been saved.'));
...
drupal mon_module_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){}
$type = content_types( $node->nid ) ; // tu vérifies que ta bien selectionné le type de contenu voulu
if($type == 'type_voulu'){
switch($op){
case "load": //ici tu peux ajouter ce que tu désires, ton noeud le prendra
//en compte lors de sa constitution
$data = variable_get('nom_de_variable', '');
....
}
}
?>}
Souhiji
souhiji
58
J’ai réussi a enregistré mon formulaire avec toutes les données pour le content dans ma base de donnée, quand je liste sur mon site internet(Content management->Content->List) tous les contents du même type que celui que j’ai enregistré, la ligne enregistrée par mon formulaire existe :D, mais quand je clique sur edit, la page n’existe pas :(.
J’ai enregistré les données dans les tables suivantes :
- node
- table de mon content_type : content_type_team_member
- url_alias
J’ai oublié une table de ma base de donnée ou je dois recréer les pages de gestions ??
J’ai pas trop compris la fonction hook_nodeapi, je ne l’ai pas utilisée.
snis
11
salut ;
http://kolossaldrupal.org/docs/un-exemple-de-module-test
saidi.nizar
5