Nhiều hình thức trên trang mô-đun


7

tôi đã tạo ra một mô-đun. Tôi đã tạo một biểu mẫu và triển khai nó trên trang:

function tudakozo_menu() {

  $items['tudakozo'] = array(
    'title' => t('Tudakozo'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('tudakozo_nevszerint_form'),
    'access callback' => TRUE,
  );

  return $items;
}

Tôi muốn có một hình thức khác về điều này

Câu trả lời:


17

Thay vì sử dụng drupal_get_form làm cuộc gọi lại trang, bạn có thể chỉ định một cuộc gọi lại tùy chỉnh và xây dựng các biểu mẫu ở đó. Việc triển khai trong Drupal 6 sẽ tương tự như sau:

function tudakozo_menu() {

  $items['tudakozo'] = array(
    'title' => t('Tudakozo'),
    'page callback' => 'tudakozo_page_callback',
    'access callback' => TRUE,
  );

  return $items;
}

function tudakozo_page_callback() {
  $output = '';

  // Render your two forms here.
  $output .= drupal_get_form('tudakozo_nevszerint_form');
  $output .= drupal_get_form('tudakozo_second_form');

  return $output;
}

Sự khác biệt duy nhất trong Drupal 7 sẽ là làm việc với một mảng kết xuất trái ngược với một chuỗi trong cuộc gọi lại trang tùy chỉnh tương tự như mã dưới đây:

function tudakozo_page_callback() {
  $build = array();

  // Render your two forms here.
  $build['form_one'] = drupal_get_form('tudakozo_nevszerint_form');
  $build['form_two'] = drupal_get_form('tudakozo_second_form');

  return $build;
}

Cảm ơn bạn Chris đã trả lời nhanh chóng. Tôi có một phản hồi "mảng". Tôi có thể làm gì với nó?
chrispooh

Tôi giả sử câu trả lời của bạn rằng bạn đang làm việc với D7, vì vậy tôi đã thêm một ví dụ D7 vào câu trả lời ở trên. Giải thích là hầu hết nội dung trong D7 được biểu diễn dưới dạng mảng kết xuất, vì vậy bạn sẽ làm việc với các mảng trái ngược với chuỗi. Mảng của bạn đang nhận được typecast, đó là lý do tại sao bạn thấy "mảng". Sửa đổi một chút gọi lại nên khắc phục vấn đề.
Chris Pliakas

@Chris, làm cách nào để tôi tạo chủ đề cho hai biểu mẫu này trong tệp tpl? stackoverflow.com/questions/23242295/ từ
kalidasan

1
Tìm thấy một bài viết drupalknowledge.blogspot.in/2013/02/ Cách
kalidasan

@kalidasan: nhưng nó không nói cách thêm nó vào tập tin tpl của tôi ?? bạn đã tìm thấy bất kỳ câu trả lời cho điều này. tôi có câu hỏi tương tự ở đây - drupal.stackexchange.com/questions/125632/NH
Hitesh

0

Kiểm tra tại đây

4. Next step is to create a hook_theme() function to theame these forms.
function custom_salesforce_theme() {
  return array(
 // this template is containing theme style for update form
    'custom_salesforce_update_form' => array(
      'template' => 'theme/custom_salesforce_update_form',
      'render element' => 'form',
    ),
 // this template is containing theme style for login form
    'custom_salesforce_login_form' => array(
      'template' => 'theme/custom_salesforce_login_form',
      'render element' => 'form',
    ),
 // this template is containing theme style for both forms
    'custom_salesforce_login_and_update' => array(
      'template' => 'theme/custom_salesforce_login_and_update',
      'arguments' => array('combine_form' => NULL),
    ),
  );
}

Note- Don't forget to create three template files inside theme folder inside your module.
5. Next step to write template preprocessor functions to display individual fields in separate template files.
/**
 * Implements Template Preprocessor For User Login().
 */
function template_preprocess_custom_salesforce_login_form(&$variables) {
  $variables['rtc_registered_email'] = drupal_render($variables['form']['rtc_registered_email']);
  $variables['rtc_password'] = drupal_render($variables['form']['rtc_password']);
  $variables['rtc_submit_form'] = drupal_render_children($variables['form']);
}

Mã trên mô tả cách bạn có thể thêm hai biểu mẫu.

Dưới đây là cách bạn thêm nó vào tập tin tpl

<?php
$form = drupal_get_form('user_register_form');
print drupal_render($form);
?>

Hy vọng nó giúp :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.