W jaki sposób wydrukować wyniki przesyłania formularza na tej samej stronie co sam formularz?Drupal: Jak renderować wyniki formularza na tej samej stronie co formularz
Stosowna hook_menu:
$items['admin/content/ncbi_subsites/paths'] = array(
'title' => 'Paths',
'description' => 'Paths for a particular subsite',
'page callback' => 'ncbi_subsites_show_path_page',
'access arguments' => array('administer site configuration'),
'type' => MENU_LOCAL_TASK,
);
strona zwrotna:
function ncbi_subsites_show_path_page() {
$f = drupal_get_form('_ncbi_subsites_show_paths_form');
return $f;
}
Formularz funkcja budynku:
function _ncbi_subsites_show_paths_form() {
// bunch of code here
$form['subsite'] = array(
'#title' => t('Subsites'),
'#type' => 'select',
'#description' => 'Choose a subsite to get its paths',
'#default_value' => 'Choose a subsite',
'#options'=> $tmp,
);
$form['showthem'] = array(
'#type' => 'submit',
'#value' => 'Show paths',
'#submit' => array('ncbi_subsites_show_paths_submit'),
);
return $form;
}
Prześlij function (pominięty funkcję sprawdzania poprawności dla zwięzłość)
function ncbi_subsites_show_paths_submit(&$form, &$form_state) {
//dpm ($form_state);
$subsite_name = $form_state['values']['subsite'];
$subsite = new Subsite($subsite_name); //y own class that I use internally in this module
$paths = $subsite->normalized_paths;
// build list
$list = theme_item_list($paths);
}
Jeśli wydrukuję tę zmienną $ list, to jest to dokładnie to, czego chcę, ale nie jestem pewien, jak uzyskać ją na stronie z oryginalną stroną formularza zbudowaną z 'ncbi_subsites_show_path_page'. Każda pomoc jest doceniana!
dostał pracę, dzięki tej końcówki. Jednak jedyny sposób, w jaki mogę "przekazać" dane z funkcji submit do funkcji, która renderuje formularz, ustawia zmienne globalne w funkcji submit, a następnie przebudowuje formularz i sprawdza, czy te zmienne są ustawione. Czy jest inny sposób na zrobienie tego? Nie lubię zmiennych globalnych. – Aaron
Również w przykładzie z tego linku można zobaczyć $ form_state ['storage']. Wierzę, że ['storage'] jest dedykowanym miejscem, w którym można bezpiecznie przechowywać dane między walidacjami, przesłaniami itd. –
Problem polega na tym, że nie mam dostępu do $ form_state z funkcji obsługi strony. Chciałbym przechowywać coś w tablicy pamięci $ form_state, ale potrzebuję tej wartości w procedurze obsługi strony, a nie funkcji budowania formularzy ... – Aaron