Почему я не получаю свою собственную страницу - drupal hook_menu - PullRequest
0 голосов
/ 04 января 2011

У меня есть модуль, который я создаю, и его целью является импорт данных определенного типа и добавление их в узлы в зависимости от этих данных.

Для этого мне нужно создать страницу, позволяющую пользователю ввести, где хранятся данные для импорта системой.

Чтобы сделать это, я подключаюсь к hook_menu, чтобы создать такую ​​страницу:

function lbar_image_importer_menu(){
    $items = array();
    $items[] = array(
        'path' => "admin/content/lbar_image_importer",
        'title' => "Import LBar Images",
        'description' => "Innitiate an importation of LBar images from a ZIP file.",
        'page callback' => 'drupal_get_form',
    );
    return $items;
}

Я заполняю форму, которую он будет использовать, подключившись к функции hook_form_alter следующим образом:

function lbar_image_importer_form_alter(&$form, &$form_state, $form_id) {   
    $form['admin']['lbar_zip_loc'] = array(
        '#type' => 'textfield',
        '#title' => 'Location of LBar Zip file: ',
        '#description' => 'This is where one or many of the lbar zip files are located. If this is a file, it will access only that zip file. If it is a directory it will open all zip files in that directory.',
    );
    $form['admin']['submit'] = array(
        "#type" => "submit",
        "#value" => "Import",
        '#submit' => array('lbar_image_importer_submit'),
    );

    return $form;
}

Однако мне не повезло. Он добавляет мои элементы формы в форму поиска и снова отображает страницу администрирования / содержимого. Как я могу сделать так, чтобы у меня была своя собственная страница, например, admin / content / node?

1 Ответ

6 голосов
/ 04 января 2011

Две вещи.Во-первых, путь должен быть в ключе массива для элемента.Во-вторых, без аргументов доступа или обратного вызова доступа вы всегда получите отказ в доступе.Чтение документов и следование примерам может помочь вам в этом.

function lbar_image_importer_menu(){
    $items = array();
    $items['admin/content/lbar_image_importer'] = array(
        'title' => "Import LBar Images",
        'description' => "Innitiate an importation of LBar images from a ZIP file.",
        'page callback' => 'drupal_get_form',
        'access callback' => true,
    );
    return $items;
}

drupal_get_form тоже ничего не сделает без значения page arguments.

...