Сделал в модуле хук forms
в нем написал такое:
Создал функцию admin:
$form['spiral_inptrack'] = array(
'#type' => 'textfield',
'#title' => t('test field'),
'#default_value' => variable_get('test', test),
'#size' => 10,
'#maxlength' => 10,
'#description' => t("test field"),
'#required' => TRUE,
);
return system_settings_form($form);
}
Вроде бы как должно что-то вывести, а выводит пустую страницу
Права проверял, URL вроде как сходится тоже admin/settings/spiral_inptrack
что бы такое вывести чтоб хотя бы понять, у меня admin обрабатывается или нет?
И что я делаю не так?
Комментарии
хз как в шестерке но в 5ке вот так
<?php
$items[] = array('path' => 'admin/settings/article', 'title' => t('Настройки статей'),
'callback' => 'drupal_get_form', 'callback arguments' => array('article_admin_settings')
);
?>
<?php
function article_admin_settings() {
// User e-mail settings.
$form['email'] = array('#type' => 'fieldset', '#title' => t('Почтовые уведомления'));
$form['email']['article_mail_subject'] = array(
'#type' => 'textfield',
'#title' => t('Тема письма'),
'#default_value' => _article_mail_text('subject'),
'#maxlength' => 180,
);
$form['email']['article_mail_body'] = array(
'#type' => 'textarea',
'#title' => t('Тело письма'),
'#default_value' => _article_mail_text('body'),
'#rows' => 15,
);
return system_settings_form($form);
}
?>
Посмотрим, что делает пункт меню 'spiral_inptrack'. Он просто вызывает функцию spiral_inptrack_admin. Она ему возвращает то, что вернула system_settings_form. А она в свою очередь лишь возвращает форму, которая, для её обработки, должна быть передана функции drupal_get_form. Значит, вместо
<?php
'page callback' => 'spiral_inptrak_admin',
?>
надо написать
<?php
'page callback' => 'drupal_get_form',
'page arguments' => array('spiral_inptrak_admin'),
?>
Нечто подобное можно увидеть, например, в файле modules/dblog/dblog.module, строки 51-59
Ужасно объяснил, правда
Попробую объяснить поконкретней на своем примере для 6 версии друпала:
$items = array();
$items['admin/settings/shop'] = array(
'title' => 'Shop Database', // то, что отображается в меню
'description' => 'Shop module settings.', // это для атрибута title, т.е. это, hint, появляющийся при наведении мыши
'page callback' => 'drupal_get_form', // в качестве callback'а вызывается форма
'page arguments' => array('shop_admin_settings'), // функция, описывающая форму и передаваемая в callback
'access arguments' => array('administer site configuration'), // права доступа
'type' => MENU_NORMAL_ITEM, // тип элемента меню
'file' => 'shop.admin.inc', // необходимо, если описание функции находится в другом файле
);
...
}
Супер! заработало! Большое спасибо всем , кто ответил!
А вот вопрос: свойство 'file' => 'shop.admin.inc', что это за файл? Обычный php? Можно ли назвать его shop.admin.php например? И если я хочу нарисовать форму не средствами друпала. а обычную форму на HTML и JS, то я могу, по идее. прямо там писать форму свою, а потом в конце сделть ей return и в хуке form написать page callback = "имя функции которая возвращает форму со всеми яваскриптовыми делами" ?