J'écris un module personnalisé et j'aimerais utiliser $ form_state du formulaire courant dans une autre fonction api non-formulaire -> custom_facet_view_build().
toute aide est appréciée :)
<?php
/**
* Implementation of hook_perm().
*/
function custom_facet_perm() {
return array(
'access foo content',
'access baz content',
);
}
/**
* Implementation of hook_menu().
*/
function custom_facet_menu() {
$items['faceted-search'] = array(
'title' => 'Faceted Search',
'page callback' => 'drupal_get_form',
'access arguments' => array(),
);
$items['facet-search-test'] = array(
'page callback' => 'drupal_get_form',
'page arguments' => array('custom_facet_form'),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Form definition; ahah_helper_demo form.
*/
function custom_facet_form($form_state) {
$form = array();
ahah_helper_register($form, $form_state);
if (isset($form_state['storage']['categories'])) {
$categories_default_value = $form_state['storage']['categories']["#value"];
}
$form['facet_search_form'] = array(
'#type' => 'fieldset',
'#title' => t('Faceted Search'),
'#prefix' => '<div id="billing-info-wrapper">', // This is our wrapper div.
'#suffix' => '</div>',
'#tree' => TRUE, // Don't forget to set #tree!
);
$form['facet_search_form']['categories'] = array(
'#type' => 'select',
'#title' => t('Category'),
'#options' => _custom_facet_taxonomy_query(1),
'#multiple' => TRUE,
'#default_value' => $categories_default_value,
);
$form['save'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
/**
* Validate callback for the form.
*/
function custom_facet_form_validate($form, &$form_state) {
}
/**
* Submit callback for the form.
*/
function custom_facet_form_submit($form, &$form_state) {
drupal_set_message('nothing done');
$form_state['storage']['categories'] = $form['facet_search_form']['categories'];
// dpm($form_state); // There's a value returned in form_state['storage] within this function
}
/**
* Implementation of hook_views_api().
*/
function custom_facet_views_api() {
return array(
'api' => 2,
);
}
function custom_facet_view_build(&$view) {
dpm($form_state); // form_state['storage] remains NULL even though there's a value on previous submission
}
googletorp, merci pour la réponse. J'ai fini par définir une variable globale. – logii
J'utilise souvent un objet de classe statique, ce qui vous donne un peu plus de liberté pour nommer vos variables globales et vos fonctions spécifiques au site. Cela vous évite également d'avoir à utiliser 'global $ quelquechose 'dans chaque fonction qui a besoin d'un accès. – artfulrobot