get_form utilisation hors hook_menu

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,

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.

Forum : 
Version de Drupal : 

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'),