Mal*_*ist 0 drupal hook-menu hook-form-alter
我有一个我正在创建的模块,其目的是导入特定类型的数据,并根据该数据将其附加到节点.
为此,我需要创建一个页面,让用户输入存储数据的位置,以便系统导入.
为此,我正在挂钩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;
}
Run Code Online (Sandbox Code Playgroud)
我通过挂钩到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;
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有运气.它将我的表单元素附加到搜索表单,并重新显示管理员/内容页面.我怎么能这样做,所以我有自己的页面,如admin/content/node?
两件事情.首先,路径应该在项目的数组键中.其次,如果没有访问参数或访问回调,您将始终获得拒绝访问权限.阅读文档并遵循示例可能对您有所帮助.
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;
}
Run Code Online (Sandbox Code Playgroud)
drupal_get_form没有page arguments价值也不会做任何事情.