<?php
print drupal_render(drupal_get_form('ajax_example_simplest'));
function
ajax_example_simplest($form, &$form_state) {
$form = array();
$form['email'] = array(
'#type' => 'textfield',
);
$form['submit'] = array(
'#type' => 'submit',
'#ajax' => array(
'callback' => 'ajax_example_simplest_callback',
'wrapper' => 'ajax-example-form-node',
'effect' => 'fade',
)
);
return $form;
}
function
ajax_example_simplest_callback($form, $form_state) {
return
'test';
}
?>
<div id="ajax-example-form-node"></div>?>
Форма не работает... пол дня уже бьюсь над этим яаксом...
смотрел пример-везде одно и тоже..делаю как написано-не работает!
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.... это читал,другие пример смотрел...
мне надо форму с одним полем ввода.чувак туда вводит своё мыло.я генерю определенный код и вывожу ему сразу,в диве.
подскажите как форму сделать..
Комментарии
Вы будете ещё биться неделю, если не объясните что это такое вы выложили.
Почему
print drupal_render(drupal_get_form('ajax_example_simplest'));
вне функции?Почему
<div id="ajax-example-form-node"></div>
вне функции?
Где вы вообще это делаете? В шаблоне ноды чтоли?
нет,просто создал страницу с форматом ввода php
в какую ф-ю это воткнуть?
сделать в виде префиксов в элементе формы?
Тогда у вас 2 варианта, либо дальше ломать голову, либо писать модуль как во всех примерах, которые вы читали через строчку
<?php //отрисовка формы,это воткнул сам.иначе как мне её вызывать?
// $default = !empty($form_state['values']['howmany']) ? $form_state['values']['howmany'] : 1;
$form['howmany_select'] = array(
$form['checkboxes_fieldset'] = array(
print drupal_render(drupal_get_form('ajax_example_autocheckboxes'));
function
ajax_example_autocheckboxes($form, &$form_state) {'#title' => t('How many checkboxes do you want?'),
'#type' => 'select',
'#options' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4),
// '#default_value' => $default,
'#ajax' => array(
'callback' => 'ajax_example_autocheckboxes_callback',
'wrapper' => 'checkboxes-div',
'method' => 'replace',
'effect' => 'fade',
),
);
'#title' => t("Generated Checkboxes"),
// The prefix/suffix provide the div that we're replacing, named by
// #ajax['wrapper'] above.
'#prefix' => '<div id="checkboxes-div">',
'#suffix' => '</div>',
'#type' => 'fieldset',
'#description' => t('This is where we get automatically generated checkboxes'),
);
return $form;
}
function
ajax_example_autocheckboxes_callback($form, $form_state) {return $form['checkboxes_fieldset'];
}
?>
вот взял пример с drupal.org -нифига не работает.
Пиши свой модуль в нем все заработает...
Похоже проблема в drupal_render()
http://drupal.org/node/1285440
Работает на версии 7.12 Вот так:
<?php
function tratata(){
...
$content = drupal_render(drupal_get_form('sthelp_form_change_balance_form'));
...
}
function sthelp_form_change_balance_form($form, &$form_state){
$form = array( );
$form['curr_balance'] = array(
'#type' => 'textfield',
'#title' => t('Установить баланс'),
'#size' => 40,
'#required' => TRUE,
'#description' => t('Десятичное значение баланса следует разделить точкой')
);
$form['replace_textfield'] = array(
'#markup' => '',
'#prefix' => '<div id="replace_textfield_div">',
'#suffix' => '</div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Сохранить'),
'#ajax' => array(
'callback' => 'sthelp_form_change_balance_submit',
'wrapper' => 'replace_textfield_div',
),
);
return $form;
}
function sthelp_form_change_balance_submit($form, &$form_state){
...
return 'Выполнено';
}
?>
Единственное что, это функция tratata. Она саму форму тоже через аджакс отдает а не просто через print. Но, думаю, это не суть.