我想要做的是:我想渲染一個頁面上的窗體與視圖。這個視圖有一個「註釋」(= CT注)列表。當你填寫表格時,記錄被存儲,表格被清除,新的記錄被添加到列表中。全部沒有頁面刷新。drupal ajax表格
我創建模塊new_note,並就將此此功能:
function new_note_form($nodeid = NULL) {
ctools_include('ajax');
// drupal_add_js(drupal_get_path('module', 'custom_forms') . '/js/note_form.js');
//dpm($nodeid);
module_load_include('inc', 'node', 'node.pages');
$form = node_add('note');
$form['field_note_reference']['und']['#value'] = '2';
$form['field_note_reference']['und']['#validated'] = 'TRUE';
$form['field_note_reference']['#attributes']['class'][] = "hidden";
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
'#executes_submit_callback' => FALSE,
'#ajax' => array(
'callback' => 'ajax_note',
'wrapper' => 'status',
),
);
$output= drupal_render($form);
dpm($form);
print $output;
}
function ajax_note(&$form, &$form_state) {
return 'test';
}
我在顯示套件塊字段,它在音符列表上方呈現使用此功能。到現在爲止還挺好。
唯一的問題是,當我提交表單,阿賈克斯不叫,和正常提交完成。
有人能幫我嗎
@編輯。
克萊夫建議是什麼後,我改變了代碼,並得到了阿賈克斯的工作。
function new_notes_form($nodeid = NULL) {
global $user;
$node = (object) array(
'uid' => $user->uid,
'name' => (isset($user->name) ? $user->name : ''),
'type' => 'note',
'language' => LANGUAGE_NONE,
);
$form_state = array();
$form_state['build_info']['args'] = array($node);
form_load_include($form_state, 'inc', 'node', 'node.pages');
$form = drupal_build_form('note_node_form', $form_state);
$form['field_note_reference']['und']['#value'] = '2';
$form['field_note_reference']['#attributes']['class'][] = "hidden";
$form['submit'] = array(
'#type' => 'button',
'#value' => 'Submit',
'#limit_validation_errors' => array(),
'#ajax' => array(
'callback' => 'ajax_note_replace',
'wrapper' => 'status',
),
);
return $form;
}
function ajax_note_replace(&$form, &$form_state) {
dpm("test");
dpm($form);
$output = '<h1>' . t('Hello World') . '</h1>';
// $node = node_load('6');
// $output .= drupal_render(node_view($node, $style = 'teaser', $options = array()));
ctools_include('ajax');
$commands = array();
$commands[] = ajax_command_prepend(".view-content", $output);
print ajax_render($commands); // this function exits.
exit;
}
@Clive,你能幫我解決嗎?我想在回調中保存節點(如果有效?)。在ajax回調中,我的node-id爲null,因爲它尚未存儲?我如何驗證並保存節點,否則將無效的表單項設置爲正常紅色。
你可以發佈'advanced_form_callback()'的代碼嗎? – Clive 2011-12-21 14:58:35
對不起了錯誤的版本,更新它 – Nealv 2011-12-21 15:15:13