[Решено] Как к форме, выведенной drupal_get_form, подключить ahah обработчик?

Главные вкладки

Аватар пользователя Cozmi Cozmi 5 февраля 2011 в 21:38

хэлп

Уточнение: анан нормально работает, если зайти на страницу формы, однако никак не хочет подключатся на кастомной странице при выводе формы через drupal_get_form

Комментарии

Аватар пользователя Cozmi Cozmi 6 февраля 2011 в 11:36

модуль: //здесь всё обычно

<?php
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>',
   );

   
  

$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

<?php
print drupal_get_form('s_mainform');
?>
Аватар пользователя Cozmi Cozmi 6 февраля 2011 в 12:05

окей..
а как тогда кастомно вывести её на странице... ?
я не хочу, чтобы по стандарту она в content выводилась

Аватар пользователя xxandeadxx xxandeadxx 6 февраля 2011 в 12:43

"RxB" wrote:

если в форме не было добавлено js можно и без неё, но чёто мне подсказывает что drupal_add_js таки в ней вызывался Smile

Аватар пользователя Cozmi Cozmi 7 февраля 2011 в 18:41

а function s_preprocess_page вызывается при создании любой странцы?... мб её содержимое засунуть в какие-нибудь условия?