Простенький модуль регистрирует свою форму в системе меню:
function dosug_menu() {
$items['dosug'] = array(
'title' => 'menu_callback',
'access callback' => 'user_access',
'page callback' => 'drupal_get_form',
'page arguments' => 'dosug_list',
'type' => MENU_CALLBACK,
);
return $items;
}
$items['dosug'] = array(
'title' => 'menu_callback',
'access callback' => 'user_access',
'page callback' => 'drupal_get_form',
'page arguments' => 'dosug_list',
'type' => MENU_CALLBACK,
);
return $items;
}
На Drupal 6.16 + PHP 4.3.11 + MySQL 4.0.22 все работает.
А на Drupal 6.16 + PHP 5.2.9 + MySQL 5.0.76 не работает:
* warning: Invalid argument supplied for foreach() in /home/.../includes/menu.inc on line 258.
* warning: array_merge(): Argument #1 is not an array in /home/.../includes/menu.inc on line 323.
* warning: Missing argument 1 for drupal_get_form() in /home/.../includes/form.inc on line 69.
* warning: call_user_func_array(): First argument is expected to be a valid callback, '' was given in /home/.../includes/form.inc on line 372.
* warning: array_merge(): Argument #1 is not an array in /home/.../includes/menu.inc on line 323.
* warning: Missing argument 1 for drupal_get_form() in /home/.../includes/form.inc on line 69.
* warning: call_user_func_array(): First argument is expected to be a valid callback, '' was given in /home/.../includes/form.inc on line 372.
Передергивание кеша, ручная зачистка {cash_menu} и другие пляски с бубном не помагают. Дайте правильный бубен
Комментарии
page arguments - должен быть массив , т.е. в вашем случае array('dosug_list')
и не хватает access arguments
Правильный бубен: page arguments - массив. И ничего чистить и дергать не надо.
А access callback вообще не нужно указывать, если он равен user_access. Тем более если вы все равно аргументы для него не передаете (которые, если что, тоже должны быть в массиве).
Ок. Реально досадный ляп.
Скоро смогу проверить.
Но все-таки - почему такой 'page arguments' работает на PHP4 и не работает на PHP5?