Khó khăn với FormAPI của Drupal 6

Events happening in the community are now at Drupal community events on www.drupal.org.
jcisio's picture

Hi,

Tôi gặp khó khăn khi port cái module joom2drupal từ 5.x lên 6.x: khi bấm submit để bắt đầu convert thì nó quay lại trang hiện tại chứ không chuyển sang cái mới. Dưới đây là đoạn mã liên quan:

<?php
function joomla2drupal_menu() {
...
 
$items['admin/joomla2drupal/settings'] = array(
   
'title' => '1. Settings',
   
'access arguments' => array('import from Joomla'),
   
'type' => MENU_LOCAL_TASK,
   
'page callback' => 'joomla2drupal_form_settings',
   
'weight' => 1
 
);
...
}

function
joomla2drupal_form_settings($form_state=NULL) {

 
// create options form; Joomla options first
 
 
$weight = -20;
 
$form['Joomla'] = array(
   
'#type' => 'fieldset',
   
'#weight' => $weight,
   
'#title' => t('Joomla settings'),
   
'#collapsible' => true,
   
'#collapsed' => false,
   
'#tree' => true
 
);
 
$weight++;
... 
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => t('Start migration!')
  );

 
drupal_process_form('joomla2drupal', $form, $form_state);
 
drupal_prepare_form('joomla2drupal', $form, $form_state);
  return
drupal_render_form('joomla2drupal', $form);
}
...
function
joomla2drupal_submit($form, &$form_state) {
 
$_SESSION['joomla2drupal'] = $form_state;
 
$form_state['redirect'] = 'admin/joomla2drupal/results';
}

function
joomla2drupal_form_results() {
  if (empty(
$_SESSION['joomla2drupal'])) {
    return
t('This page is supposed to display results of migration process and not for direct viewing. Please go to <a href="!URL">settings page</a> to start migration.', array('!URL' => url('admin/joomla2drupal')));
  }
 
drupal_set_message('Results');
}
?>

Trước tiên, không biết tại sao mà hook_submit không được gọi ? Thứ hai là có cách nào khác trong joomla2drupal_form_results (có thể được gọi qua menu) kiểm tra có phải người dùng submit chứ không phải click trực tiếp ở menu không ?

Cảm ơn nhiều.

Comments

Có lẽ tôi giải quyết

jcisio's picture

Có lẽ tôi giải quyết được rồi. Tác giả của module này để chung page callback và form lại gây rắc rối. Tôi tách ra, dùng drupal_get_form để gọi thì thấy submit được. Để từ từ xem lại...

Thông tin công nghệ : Tin tức CNTT, điện tử, viễn thông...