Je suis en train d'écrire un module pour mon organisation pour mettre en cache des flux XML vers des fichiers statiques à un endroit arbitraire sur notre serveur web. Je suis nouveau au développement de Drupal, et je voudrais savoir si j'approche de la bonne façon.Traitement de formulaire arbitraire avec Drupal
Fondamentalement, je:
- Expose une URL via le crochet de menu, où un utilisateur peut entrer dans un un répertoire de sortie sur le serveur Web et appuyez sur le bouton « dump » et ensuite PHP aller à drupal et obtenir le flux xml. Je n'ai pas besoin d'aide avec cette fonctionnalité, parce que j'ai un prototype fonctionnant en Python (en dehors de Drupal).
- Fournir un rappel pour le formulaire où je peux faire ma logique, en utilisant les paramètres de formulaire.
Voici le crochet de menu:
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;
}
je produis la forme:
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);
}
Ensuite, la fonctionnalité est dans le rappel:
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);
}
La question: Est-ce c'est une manière décente de traiter une forme arbitraire dans Drupal? Je n'ai pas vraiment besoin d'écouter des hooks drupal, parce que je suis en train de faire un peu d'URL et de traitement de fichiers.
Quels sont les arguments que je reçois dans le rappel ($ q)? C'est le tableau de forme je suppose, avec les valeurs de poste? Est-ce la meilleure façon de travailler sur les paramètres de formulaire?
Merci pour tout conseil.