Submitted by DrymaS on
Bonjour,
Je suis encore novice dans l'utilisation de Drupal et je rencontre un problème que je n'arrive pas à résoudre.
Je voudrai créer un formulaire dans une page d'un site et, pour ce faire, j'utilise la fonction get_form.
Le soucis est que je ne veux pas l'utiliser en page callback dans le hook_menu.
Voici la structure de la page que j'ai actuellement :
function _stock_selection_page(){
function entree_plaque_form($form, &$form_state) {
$form['entree_plaque'] = array(
'#title' => t('Ajouter des plaques:'),
'#type' => 'textfield',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Add'),
);
return $form;
}
function entree_plaque_form_submit($form, &$form_state) {
drupal_set_message(t('Yay, le formulaire fonctionne !'));
}
function form_plaque_entree (){
return drupal_get_form('entree_plaque_form');
}
$tableau_plaque_selection = array ();
function plaque_selection_query(){
$id_produit_selection = intval($_GET[id_produit]);
$query = db_select('node', 'n');
$query->join('stock_plaque', 'p', 'n.nid = p.id_node');
$result = $query
->fields('n', array('nid', 'title'))
->fields('p', array('quantite_plaque'))
->condition('status', 1) //Published.
->condition('type', 'fiche_produit')
->condition('nid', $id_produit_selection)
->orderBy('created', 'DESC');
return $query->execute();
}
$result_plaque_selection_query = plaque_selection_query('page');
foreach ($result_plaque_selection_query as $node) {
$tableau_plaque_selection[nom_produit] = $node->title;
$tableau_plaque_selection[qte_produit] = $node->quantite_plaque;
}
$page_array['stock_arguments'] = array(
'titre' => array(
'#type' => 'markup',
'#markup' => '<h2>Entrées/sorties de '. $tableau_plaque_selection[nom_produit].'</h2>',
),
'quantite_plaque_act' => array(
'#type' => 'markup',
'#markup' => '<em>'.$tableau_plaque_selection[qte_produit].' plaque(s) '. $tableau_plaque_selection[nom_produit].' en stock</em>',
),
'entrees' => array(
'#type' => 'markup',
'#markup' => '<h3>Entrées de '. $tableau_plaque_selection[nom_produit].'</h3>',
),
'entrees_form' => array(
form_plaque_entree()
),
'sorties' => array(
'#type' => 'markup',
'#markup' => '<h3>Sorties de '. $tableau_plaque_selection[nom_produit].'</h3>',
)
);
return $page_array;
}
Pour l'instant, tout est correct (affichage de la page, affichage du formulaire), sauf que le formulaire ne déclenche pas la fonction drupal_set_message lorsque l'on le soumet.
Peut être que ma démarche est mauvaise dès le départ à vouloir utiliser la fonction get_form, en tout cas je vous remercie par avance pour votre aide et vos réponses.
Bonjour essaie de cet façon :
Permalien Soumis par lezath le 22 Novembre, 2013 - 14:07
Bonjour essaie de cette façon :
$ton_form_a_ajouter = drupal_get_form ('entree_plaque_form');
$page_array = drupal_render ($ton_form_a_ajouter);
Dans le submit tu dois appeler ta fonction entree_plaque_form_submit :
'#submit' => array('entree_plaque_form_submit'),
Merci beaucoup pour ta
Permalien Soumis par DrymaS le 28 Novembre, 2013 - 09:42
Merci beaucoup pour ta réponse.
Ça fonctionne à présent.
Un grand merci à toi !