Submitted by Altes on
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
Bonjour, Un exemple pour la
Permalien Soumis par flebrenn le 10 Septembre, 2012 - 10:28
Bonjour,
Un exemple pour la validation : http://stackoverflow.com/questions/6785882/how-do-i-apply-webform-valida...
et après pour le submit c'est la même chose (remplacer validate par submit).
Utilise dpm() (module devel) pour voir ce que te retourne ton $form_state et notamment 'values'.
Cordialement,
Merci, ok j’ai compris, je
Permalien Soumis par Altes le 10 Septembre, 2012 - 11:18
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
Permalien Soumis par flebrenn le 10 Septembre, 2012 - 13:47
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
Permalien Soumis par Altes le 10 Septembre, 2012 - 14:02
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...
oops hje me suis tromper mon
Permalien Soumis par Altes le 10 Septembre, 2012 - 14:03
oops hje me suis tromper mon champs se s'appelle "field_cp" dans cck !!!
Je change ça dans le code et je test
Warning : array_values()
Permalien Soumis par Altes le 10 Septembre, 2012 - 14:08
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
Permalien Soumis par Altes le 10 Septembre, 2012 - 14:17
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
Permalien Soumis par Altes le 10 Septembre, 2012 - 16:20
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