Posted by jcisio on March 14, 2008 at 5:41pm
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
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...