我正在寫一個自定義模塊,我想在另一個非form API函數 - > custom_facet_view_build()中使用$ form_state當前窗體。
任何幫助表示讚賞:)
<?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,感謝您的回答。我最終定義了一個全局變量。 – logii 2010-04-16 13:43:37
我經常使用靜態類對象,這使您在命名全局變量和特定於站點的功能時更加自由。它還可以避免在需要訪問的每個函數中使用'global $ whatever'。 – artfulrobot 2012-03-23 18:27:07