Я создаю модуль Drupal 7.В настоящее время моя цель состоит в том, чтобы получить форму для вставки чего-либо в базу данных, а затем сообщить пользователю, что это работает.Я могу получить его, чтобы отправить в базу данных просто отлично.Получение формы, чтобы перестроить и сообщить пользователю, что его срок был отправлен, не будет работать.Я продолжаю получать сообщения об ошибках, которые я буду публиковать в комментариях из-за предотвращения спама .... sigh
Более поздняя ошибка, которую мне удалось скопировать с помощью инструментов разработчика Chrome:
array ('term_name' => 'jfidj', 'set_id' => '1',) [{"command": "settings", "settings": {"basePath": "\ /drupal7 \ / "," overlay ": {" paths ": {" admin ":" node \ / * \ / edit \ nnode \ / * \ / delete \ nnode \ / * \ / revisions \ nnode \ / * \ /revisions \ / * \ / revert \ nnode \ / * \ / revisions \ / * \ / delete \ nnode \ / add \ nnode \ / add \ / * \ nadmin \ nadmin \ / * \ nbatch "," non_admin ":""}," ajaxCallback ":" overlay-ajax "}}," merge ": false}, {" command ":" insert "," method ": null," selector ": null," data ":" \ u003cdivid = \ "form_message \" \ u003e \ u003cdiv class = \ "form-item-type-type-textfield form-item-message \" \ u003e \ n \ u003clabel for = \ "edit-message - 2 \" \ u003ehidden\ u003c \ / label \ u003e \ n \ u003cinput type = \ "text \" maxlength = \ "128 \" name = \ "message \" id = \ "edit-message - 2 \" size = \ "60 \"value = \" \ "class = \" form-text \ "\ / \ u003e \ n \ u003c \ / div \ u003e \ n \ u003c \ / div \ u003e "," settings ": null}, {" command ":" insert "," method ":" prepend "," selector ": null," data ":" "," settings ": null}]
Я пытался отформатировать его лучше, но он просто грязный ...
Насколько я могу судить, я все делаю правильно.Я следил за модулем примеров, и Руководство по формам Drupal Ajax .
Я создаю форму с определенными обертками, затем в ней есть оператор if, который выполняется только в том случае, если форма имеетотправьте, а затем используйте ajax для замены обернутого элемента формы в соответствии с тем, что вы хотите.
Чтобы увидеть все, что я пробовал, вы можете посмотреть тему на форуме Drupal, на которую я опубликую ссылку в комментариях.
Вот текущий код, который я пробую, есть код, который я закомментировал, который я пробовал и не работает.
/**
* Add a term
*/
function markit_form_term_add()
{
$sets = markit_get_marksets();
//drupal_set_message(var_export($sets));
$form = array();
$form['message'] = array(
'#type' => 'textfield',// . !(empty($form_state['values']['term_name'])) ? 'textfield' : 'hidden',
'#title' => t('hidden'),
'#value' => '',// . !(empty($form_state['values']['term_name'])) ? 'Added term: ' . $form_state['values']['term_name'] : 'Message goes here.',
'#prefix' => '<div id="form_message">',
'#suffix' => '</div>',
);
$form['add'] = array(
'#type' => 'fieldset',
'#title' => t('Add new Term'),
'#prefix' => '<div id="add_term_form">',
'#suffix' => '</div>',
);
$form['add']['name'] = array(
'#type' => 'textfield',
'#title' => t('Term name'),
'#size' => 15,
);
//select the set you want to add the term to
$setNames = array();
foreach($sets as $row)
{
$id = $row['set_id'];
$setNames[$id] = t($row['set_name']);
}
$form['add']['sets']['set_names'] = array(
'#type' => 'select',
'#title' => t('Select a set.'),
'#options' => $setNames,
'#description' => t('Select from the list of sets.'),
);
$form['add']['submit'] = array(
'#type' => 'button',
'#value' => t('Add'),
'#ajax' => array(
'callback' => 'markit_ajax_terms_add_callback',
'wrapper' => 'form_message',
'method' => 'replace',
),
);
if(!empty($form_state['values']['name']))
{
$form['message']['#type'] = 'textfield';
$form['message']['#value'] = t('Added term: ');// . $form_state['values']['term_name'];
}
return $form;
}
function markit_ajax_terms_add_callback($form, $form_state)
{
$entry = array(
'term_name' => $form_state['values']['name'],
'set_id' => $form_state['values']['set_names'],
);
markit_form_term_add_insert($entry);
return $form['message'];
}
/*
* Get an array of mark sets
*/
function markit_get_marksets()
{
$output = '';
$select = db_select('markit_sets','s');
$select->addField('s','set_id');
$select->addField('s','set_name');
$entries = $select->execute()->fetchAll(PDO::FETCH_ASSOC);
return $entries;
}
/**
* Get terms by set_id
*/
function markit_get_markterms($termid=NULL,$termname=NULL,$setid=NULL)
{
$select = db_select('markit_terms','t');
$select->addField('t','term_id');
$select->addField('t','term_name');
$select->addField('t','set_id');
if($termid)
$select->condition('term_id',$termid);//,'=');
if($termname)
$select->condition('term_name',$termname);//,'=');
if($setid)
$select->condition('set_id',$setid);//,'=');
$entries = $select->execute()->fetchAll(PDO::FETCH_ASSOC);
return $entries;
}
/**
* Insert new set into database
*/
function markit_form_set_add_insert($entry)
{
$return_value = NULL;
try {
$return_value = db_insert('markit_sets')
->fields($entry)
->execute();
}
catch (Exception $e) {
drupal_set_message(t('db_insert failed. Message = %message, query= %query',
array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
}
return $return_value;
}
/**
* Insert new set into database
*/
function markit_form_term_add_insert($entry)
{
drupal_set_message(var_export($entry));
$return_value = NULL;
try {
$return_value = db_insert('markit_terms')
->fields($entry)
->execute();
}
catch (Exception $e) {
drupal_set_message(t('db_insert failed. Message = %message, query= %query',
array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
}
return $return_value;
}