Làm cách nào để in kết quả của việc gửi biểu mẫu trên cùng một trang với biểu mẫu?Drupal: Cách hiển thị kết quả của biểu mẫu trên cùng một trang dưới dạng
hook_menu liên quan:
$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,
);
trang callback:
function ncbi_subsites_show_path_page() {
$f = drupal_get_form('_ncbi_subsites_show_paths_form');
return $f;
}
Mẫu xây dựng chức năng:
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;
}
Gửi function (bỏ qua chức năng validate cho ngắn gọn)
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);
}
Nếu tôi in biến $ list đó, đó chính xác là những gì tôi muốn, nhưng tôi không biết cách đưa nó vào trang với trang biểu mẫu gốc được tạo từ 'ncbi_subsites_show_path_page'. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao!
Got nó làm việc, nhờ mẹo này. Tuy nhiên, cách duy nhất tôi có thể "chuyển" dữ liệu từ hàm submit tới hàm render biểu mẫu bằng cách thiết lập các biến toàn cầu trong hàm submit, sau đó xây dựng lại biểu mẫu và kiểm tra xem các biến đó có được đặt hay không. Có một cách khác để làm điều này? Tôi không thích các biến toàn cục. – Aaron
Cũng trong ví dụ từ liên kết đó, bạn có thể thấy $ form_state ['storage'] đang được sử dụng. Tôi tin rằng ['lưu trữ'] là một nơi dành riêng để bạn lưu trữ dữ liệu một cách an toàn giữa các lần xác nhận hợp lệ, gửi ... –
Vấn đề là tôi không có quyền truy cập vào $ form_state từ chức năng xử lý trang. Tôi muốn lưu trữ thứ gì đó trong mảng lưu trữ của $ form_state, nhưng tôi cần giá trị đó trong trình xử lý trang, không phải chức năng tạo biểu mẫu ... – Aaron