Cozmi 5 февраля 2011 в 21:38 хэлп Уточнение: анан нормально работает, если зайти на страницу формы, однако никак не хочет подключатся на кастомной странице при выводе формы через drupal_get_form Drupal6 Есть вопрос Блог Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Cozmi 5 февраля 2011 в 21:47 вроде тут http://formata.net/it/drupal-ahah-formy-zagruzhenye-ajax/ чо-то однако, 1)страница генерируется не полностью (из-за exit();) 2) не понял куда запихать 3 фрагмент кода...
Cozmi 5 февраля 2011 в 21:48 xxandeadxx, не могли бы поподробнее написать, что там необходимо добавить?
xxandeadxx 5 февраля 2011 в 22:05 <?phpfunction hook_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'some_form_id') { $form['some-element']['#ahah'] = ... }}?>
Cozmi 6 февраля 2011 в 0:11 это ерунда... свойство ['#ahah'] уже есть у объекта формы. однако ничего не работает
Cozmi 6 февраля 2011 в 11:36 модуль: //здесь всё обычно <?phpfunction s_menu() { $items = array(); $items['save/js'] = array( 'page callback' => 's_save_js', 'type' => MENU_CALLBACK, 'access callback' => TRUE, ); return $items;} function s_mainform($form_state) { $form['form_wrapper'] = array( '#tree' => FALSE, '#weight' => -4, '#prefix' => '<div class="clear-block" id="form-wrapper">', '#suffix' => '</div>', ); $form['form_wrapper']['name'] = array( '#type' => 'textfield', '#title' => t('Tag'), // '#required' => TRUE, '#maxlength' => 100, '#size' => 30, '#default_value' => ($form_state['values']['name']) ? $form_state['values']['name'] : '', ); $form['form_wrapper']['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), '#submit' => array('s_mainform_submit'), '#ahah' => array( 'path' => 'save/js', 'wrapper' => 'form-wrapper', 'method' => 'replace', 'effect' => 'fade', ), ); return $form;} function s_mainform_submit($form, &$form_state) { drupal_set_message('Сообщение отправлено'); unset($form_state['values']);} function s_save_js() { $form_state = array('storage' => NULL, 'submitted' => FALSE); $form_build_id = $_POST['form_build_id']; $form = form_get_cache($form_build_id, $form_state); $args = $form['#parameters']; $form_id = array_shift($args); $form_state['post'] = $form['#post'] = $_POST; $form['#programmed'] = $form['#redirect'] = FALSE; drupal_process_form($form_id, $form, $form_state); $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id); $choice_form = $form['form_wrapper']; unset($choice_form['#prefix'], $choice_form['#suffix']); $output = theme('status_messages') . drupal_render($choice_form); drupal_json(array('status' => TRUE, 'data' => $output)); }?> страница page.tpl.php <?phpprint drupal_get_form('s_mainform');?>
Cozmi 6 февраля 2011 в 12:05 окей.. а как тогда кастомно вывести её на странице... ? я не хочу, чтобы по стандарту она в content выводилась
xxandeadxx 6 февраля 2011 в 12:44 <?php// s.modulefunction s_preprocess_page(&$vars) { $vars['s_mainform'] = drupal_get_form('s_mainform'); $vars['scripts'] = drupal_get_js();} // page.tpl.phpecho $s_mainform;?>
Виктор Степаньк... 6 февраля 2011 в 12:33 Андед, а "xxandeadxx" wrote: $vars['scripts'] = drupal_get_js(); зачем? Я что-то не фтыкаю
xxandeadxx 6 февраля 2011 в 12:43 "RxB" wrote: если в форме не было добавлено js можно и без неё, но чёто мне подсказывает что drupal_add_js таки в ней вызывался
Виктор Степаньк... 6 февраля 2011 в 12:47 Ну только если так, а то я дураком себя почувствовал, никогда вроде ж не надо было
Cozmi 7 февраля 2011 в 18:41 а function s_preprocess_page вызывается при создании любой странцы?... мб её содержимое засунуть в какие-нибудь условия?
xxandeadxx 9 февраля 2011 в 18:18 "Cozmi" wrote: а function s_preprocess_page вызывается при создании любой странцы? что мешает это проверить?
Комментарии
hook_form_alter
вроде тут http://formata.net/it/drupal-ahah-formy-zagruzhenye-ajax/ чо-то
однако, 1)страница генерируется не полностью (из-за exit();)
2) не понял куда запихать 3 фрагмент кода...
xxandeadxx, не могли бы поподробнее написать, что там необходимо добавить?
<?php
function hook_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'some_form_id') {
$form['some-element']['#ahah'] = ...
}
}
?>
это ерунда...
свойство ['#ahah'] уже есть у объекта формы. однако ничего не работает
код?
модуль: //здесь всё обычно
<?php
$form['form_wrapper']['name'] = array(
$form['form_wrapper']['submit'] = array(
function s_menu() {
$items = array();
$items['save/js'] = array(
'page callback' => 's_save_js',
'type' => MENU_CALLBACK,
'access callback' => TRUE,
);
return $items;
}
function
s_mainform($form_state) { $form['form_wrapper'] = array('#tree' => FALSE,
'#weight' => -4,
'#prefix' => '<div class="clear-block" id="form-wrapper">',
'#suffix' => '</div>',
);
'#type' => 'textfield',
'#title' => t('Tag'),
// '#required' => TRUE,
'#maxlength' => 100,
'#size' => 30,
'#default_value' => ($form_state['values']['name']) ? $form_state['values']['name'] : '',
);
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array('s_mainform_submit'),
'#ahah' => array(
'path' => 'save/js',
'wrapper' => 'form-wrapper',
'method' => 'replace',
'effect' => 'fade',
),
);
return $form;
}
function
s_mainform_submit($form, &$form_state) {drupal_set_message('Сообщение отправлено');
unset($form_state['values']);
}
function
s_save_js() {$form_state = array('storage' => NULL, 'submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
$form = form_get_cache($form_build_id, $form_state);
$args = $form['#parameters'];
$form_id = array_shift($args);
$form_state['post'] = $form['#post'] = $_POST;
$form['#programmed'] = $form['#redirect'] = FALSE;
drupal_process_form($form_id, $form, $form_state);
$form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
$choice_form = $form['form_wrapper'];
unset($choice_form['#prefix'], $choice_form['#suffix']);
$output = theme('status_messages') . drupal_render($choice_form);
drupal_json(array('status' => TRUE, 'data' => $output));
}
?>
страница page.tpl.php
<?php
print drupal_get_form('s_mainform');
?>
drupal_get_form надо делать в модуле, до вывода секции head
окей..
а как тогда кастомно вывести её на странице... ?
я не хочу, чтобы по стандарту она в content выводилась
<?php
// s.module
function s_preprocess_page(&$vars) {
$vars['s_mainform'] = drupal_get_form('s_mainform');
$vars['scripts'] = drupal_get_js();
} // page.tpl.php
echo $s_mainform;
?>
Андед, а
зачем? Я что-то не фтыкаю
блин, спасибо.
если в форме не было добавлено js можно и без неё, но чёто мне подсказывает что drupal_add_js таки в ней вызывался
Ну только если так, а то я дураком себя почувствовал, никогда вроде ж не надо было
...
а function s_preprocess_page вызывается при создании любой странцы?... мб её содержимое засунуть в какие-нибудь условия?
нет?
что мешает это проверить?
лень-матушка