[RESOLU] Champs formulaire Hook Alter form

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Voila j'ai une petite question sur un formulaire.

J'ai créé un type de contenu.

Il est accessible aux personnes logguer.

J'ai donc créé des champs pour mon type de contenu.

Maintenant avec un hook alter form, je modifie le formulaire en lui ajoutant un champs ajax (pour les code postaux).
Cela fonctionne tres bien sauf que comment je le recupere en base ?

Je me suis dit je vais créer un champs cp et donc mon hook alter, je le redefini

$form['cp']= array(....)

Mais cela ne fonctionne pas.
Dois je faire un hook alter sur le submit ?

Merci a vous

Forum : 
Version de Drupal : 
Tags : 

Merci, ok j'ai compris, je bloque sur le submit

[code]

function config_form_alter(&$form, &$form_state, $form_id)
{

if($form_id == "annonces_node_form"){

$form['cp'] = array(
'#type' => 'textfield',
'#title' => t('Votre code postal'),
'#weight' => 8,
'#autocomplete_path' => 'city/autocomplete',
'#required' => 1,

);

$form['#submit'][]='config_form_submit';

return $form;

}

}

function config_form_submit($form,&$form_state)
{

}
[/code]

Dans ma fonction config_form_submit, je reçois bien le post dans le $form_state.
par contre je n'arrive pas à le sauver en base.
J'ai voulu utiliser drupal_form_submit('annonces_node_form', $form_state); mais il n'a pas aimé !

Si "annonce" est un type que tu as créé, je te conseille de plutôt passer par l'interface de gestion des champs pour ajouter un champ "int". La sauvegarde se fera toute seule.

Regarde également :
http://drupal.org/project/addressfield

Sinon avec un webform, il faut t'intéresser à node_load, node_save, entity_load, entity_save, entityfieldquery, entity_metadata_wrapper

http://api.drupal.org/api/drupal/includes!database!database.inc/group/da...

Cordialement,

oui annonce est un type dans lequel j'ai plusieurs champs dont cp.

Dans mon alter je le redefini comme tu as pu voir, en textfield car cp prend la forme de "cp (ville)" recuperer en ajax.
mais pourtant il le prend pas en compte lors de la sauvegarde...

Warning : array_values() [function.array-values]: The argument should be an array dans _field_filter_items() (ligne 513 dans /Applications/MAMP/htdocs/services/modules/field/field.module).

Warning : Invalid argument supplied for foreach() dans text_field_validate() (ligne 119 dans /Applications/MAMP/htdocs/services/modules/field/modules/text/text.module).

Notice : Undefined index: #language dans locale_field_node_form_submit() (ligne 405 dans /Applications/MAMP/htdocs/services/modules/locale/locale.module).

alors la ! mystere !

um

[code]

function config_form_alter(&$form, &$form_state, $form_id)
{

if($form_id == "annonces_node_form"){

$form['field_cp'] = array(
'#type' => 'textfield',
'#title' => t('Votre code postal'),
'#weight' => 8,
'#autocomplete_path' => 'city/autocomplete',
'#required' => 1,

);

$form['#submit'][]='config_form_submit';

return $form;

}

}

function config_form_submit($form,&$form_state)
{
echo '

';
print_r($form_state);
echo '

';
exit();
}

[/code]

lorsque je regarde le print_r, le field_cp est :

[field_cp] => Array ()

Voici la solution

function config_form_alter(&$form, &$form_state, $form_id)
{

if($form_id == "annonces_node_form"){
$form['field_cp']['und'][0]['value']['#autocomplete_path']= 'city/autocomplete';
}

return $form;

}

il faut juste modifier le champs cck et non le recréé en ligne de code