Я недавно начал разбираться с Drupal`ом так что извините за глупый вопрос.
Я пишу модуль и у меня не получается сделать меню
Мой код:
<?phpfunction smssender_menu() {
$items = array();
$items['admin/settings/smssender'] = array(
'title' => 'On this date module settings',
'description' => 'Description of your On this date settings control',
'page callback' => 'drupal_get_form', //Имя функции, вызываемой для отображения страницы, когда пользователь переходит по пункту меню.
'page arguments' => array('smssender_admin'), //Массив аргументов, передаваемых функции 'page callback'
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
$items['smssender'] = array(
'title' => 'On this date',
'page callback' => 'smssender_page',
'page arguments' => array('smssender_form'), //Массив аргументов, передаваемых функции 'page callback'
'access arguments' => array('access administration pages'),
'type' => MENU_CALLBACK
);
return $items;
}
function smssender_admin() {
$form['smssender_patch'] = array(
'#type' => 'textfield',
'#title' => t('Maximum number of links'),
'#default_value' => variable_get('smssender_patch', 'PhoneBook/PhoneBook.txt'),
'#size' => 50,
'#maxlength' => 50,
'#description' => t("The maximum number of links to display in the block."),
'#required' => TRUE,
);
return system_settings_form($form);
}
function smssender_form()
{
$FilesPatch=variable_get('smssender_patch', 'PhoneBook/PhoneBook.txt');
echo '<br/><br/>$FilesPatch: ';
print_r($FilesPatch);
if(file_exists($FilesPatch))
{
$Phone = _read_to_files($FilesPatch);
echo '$Phone: ';
print_r($Phone);
}
else $page_content='The specified file does not exist'; //Указанный файл не существует
$period = drupal_map_assoc(array(3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200, 4838400, 9676800), 'format_interval');
$form['smssender_patch'] = array(
'#type' => 'select',
'#title' => t('Discard logs older than'),
'#default_value' => variable_get('timer', 259200),
'#options' => $period,
'#description' => t('The timer.'),
);
return $form;
}
function smssender_page()
{
echo '<br/><br/>Обработка данных формы';
return drupal_get_form('smssender_form');
}?>
Страница admin/settings/smssender открывается и форма на ней работают корректно, но вместо странице smssender открывается белый лист.
Как я понимаю алгоритм работы меню:
когда я пытаюсь открыть страницу smssender, то создаётся форма указанная в функции имя которой записано в массиве $items['smssender']['page arguments'] => array('smssender_form'). После нажатия кнопки формы 'Отправить' выполняется функция $items['smssender']['page callback'Ъ => 'smssender_page' в которой происходит обработка данных полученных из формы и показ результата.
Если я в своих рассуждениях в чёмто не прав подскажите пожалуйста. Я с этим меню уже пол дня воюю и пока оно меня побеждает.
Комментарии
когды вы пытаетесь открыть страницу smssender, то открывается страница, содержимое которой генерирует ф-я имя которой записано в массиве $items['smssender']['page callback'].
после нажатия кнопки формы 'Отправить' выполняется функция smssender_form_submit, которая у вас не определена
http://drupaldance.com/blog/10-steps-to-drupal-forms