Buonasera,
vorrei, in una pagina X del sito, inserire in basso il form di creazione di un contenuto. Alla pressione del pulsante di submit del form, vorrei che si restasse sulla stessa pagina confermando all'utente l'avvenuta creazione del nuovo contenuto.
Ho dunque creato un blocco PHP e utilizzato il seguente codice:
<?php
$form = node_add('status');
$output = drupal_render($form);
print $output;
?>
E in effetti mi viene mostrato il form di inserimento per un nuovo contenuto di tipo Status.
Per AJAX, a livello di template.php ho:
<?php
$form['actions']['submit'] = array(
"#type" => "submit",
"#value" => "Aggiorna",
"#ajax" => array(
"callback" => "status_node_ajax_submit",
"wrapper" => "formwrapper",
"effect" => "fade")
);
?>
E ho creato anche un modulo custom per includere node.pages.inc nell'hook menu_alter:
<?php
$items['file/ajax']['file path'] = drupal_get_path('module', 'node');
$items['file/ajax']['file'] = 'node.pages.inc';
$items['system/ajax']['file path'] = drupal_get_path('module', 'node');
$items['system/ajax']['file'] = 'node.pages.inc';
?>
Il problema è questo: cosa devo inserire in status_node_ajax_submit in modo che il form venga gestito e il nodo effettivamente creato? Al momento non accade nulla (ho errore 500 nella popup AJAX). Al momento la funzione è:
<?php
function status_node_ajax_submit($form, &$form_state) {
drupal_validate_form('status_node_form', $form, $form_state);
if (form_get_errors()) {
$form_state['rebuild'] = TRUE;
return $form;
}
drupal_form_submit($form, $form_state); // qui ho errori
$output = array(
'#markup' => 'Form inviato.'
);
return $output;
}
?>
Grazie mille.
https://www.drupal.org/project/asaf
Buonasera,
ho risolto con questo suggerimento: https://www.drupal.org/node/2277137#comment-8828853.
Saluti.
Well done!