Я пишу модуль для своей организации для кэширования потоков XML в статические файлы в произвольном месте на нашем веб-сервере. Я новичок в разработке Drupal и хотел бы знать, правильно ли я подхожу к этому.
В основном я:
- Предоставьте URL через хук меню, где пользователь может войти в выходной каталог на веб-сервере и нажать кнопку «сбросить», а затем заставить PHP перейти к drupal и получить xml-канал. Мне не нужна помощь с этой функциональностью, потому что на самом деле у меня есть прототип, работающий на Python (за пределами Drupal) ..
- Предоставьте обратный вызов для формы, где я могу выполнять свою логику, используя параметры формы.
Вот хук меню:
function ncbi_cache_files_menu() {
$items = array();
$items['admin/content/ncbi_cache_files'] = array(
'title' => 'NCBI Cache File Module',
'description' => 'Cache Guide static content to files',
'page callback' => 'drupal_get_form',
'page arguments' => array( 'ncbi_cache_files_show_submit'),
'access arguments' => array( 'administer site configuration' ),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
Я создаю форму в:
function ncbi_cache_files_show_submit() {
$DEFAULT_OUT = 'http://myorg/foo';
$form[ 'ncbi_cache_files' ] = array(
'#type' => 'textfield',
'#title' => t('Output Directory'),
'#description' => t('Where you want the static files to be dumped.
This should be a directory that www has write access to, and
should be accessible from the foo server'),
'#default_value' => t( $DEFAULT_OUT ),
'#size' => strlen( $DEFAULT_OUT ) + 5,
);
$form['dump'] = array(
'#type' => 'submit',
'#value' => 'Dump',
'#submit' => array( 'ncbi_cache_files_dump'),
);
return system_settings_form( $form );
}
Тогда функциональность в обратном вызове:
function ncbi_cache_files_dump( $p, $q) {
//dpm( get_defined_vars() );
$outdir = $p['ncbi_cache_files']['#post']['ncbi_cache_files'];
drupal_set_message('outdir: ' . $outdir );
}
Вопрос: это достойный способ обработки произвольной формы в Drupal? На самом деле мне не нужно прислушиваться к каким-либо друпским хукам, потому что я просто занимаюсь обработкой URL и файлов.
Что это за аргументы, которые я получаю в обратном вызове ($ q)? Я думаю, это массив форм со значениями записей? Это лучший способ заставить работать параметры формы?
Спасибо за любой совет.