Создание меню в модуле

Главные вкладки

Аватар пользователя Tisar Tisar 6 сентября 2010 в 21:45

Я недавно начал разбираться с 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' в которой происходит обработка данных полученных из формы и показ результата.

Если я в своих рассуждениях в чёмто не прав подскажите пожалуйста. Я с этим меню уже пол дня воюю и пока оно меня побеждает.

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 6 сентября 2010 в 22:27

"Tisar" wrote:
когда я пытаюсь открыть страницу smssender, то создаётся форма указанная в функции имя которой записано в массиве $items['smssender']['page arguments'] => array('smssender_form').

когды вы пытаетесь открыть страницу smssender, то открывается страница, содержимое которой генерирует ф-я имя которой записано в массиве $items['smssender']['page callback'].

"Tisar" wrote:
После нажатия кнопки формы 'Отправить' выполняется функция $items['smssender']['page callback'Ъ => 'smssender_page'

после нажатия кнопки формы 'Отправить' выполняется функция smssender_form_submit, которая у вас не определена

http://drupaldance.com/blog/10-steps-to-drupal-forms