模块页面上的多个表格 -- forms 领域 drupal 相关 的问题

Multiple form on module page


7
vote

问题

中文

我创建了一个模块。我在页面上创建了一个表单并实现了它:

  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; }   

我想在这个

上有另一种形式
英文原文

i created a module. I created a form and implemented it on the page:

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; } 

I would like to have an another form on this

  

回答列表

17
 
vote
vote
最佳答案
 

而不是使用drupal_get_form作为页面回调,您可以指定自定义回调并在那里构建表单。 Drupal 6中的实现将类似于以下内容:

  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; }   

drupal 7的唯一区别将使用渲染阵列,而不是自定义页面回调中的字符串,类似于以下代码:

  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; }   
 

Instead of using drupal_get_form as the page callback, you can specify a custom callback and build the forms there. An implementation in Drupal 6 would look similar to the following:

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; } 

The only difference in Drupal 7 would be working with a render array as opposed to a string in the custom page callback similar to the code below:

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; } 
 
 
         
         
0
 
vote

check 此处

  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']); }   

上面的代码描述了如何添加两种形式。

下面这里 这就是您将其添加到TPL文件

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

希望它有助于:)

 

Check here

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']); } 

Above code describes how you can add two forms.

Below here This is how you add it to tpl file

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

Hope it helps :)

 
 

相关问题

0  提交表格的弹出窗口  ( Popup on submitting a form ) 
更新:我构建了一种自定义表单,处理数据并返回 TRUE 或 FALSE 。我想通过ajax处理数据,如果表单返回 TRUE ,则显示弹出窗口。愿有人帮我完成代码吗?我第一次使用带有Drupal的Ajax。 我的表格更改 function invitecode_menu() { $items['inviteco...

0  验证模态对话框表格  ( Validation on modal dialog forms ) 
我使用简单对话框模块,在jQuery模态对话框中打开了jQuery模态对话框。我无法对此进行任何验证。 它是模块的限制吗?如果我使用创建模态对话框表单的任何其他方法,例如使用CTools模态对话框,或使用Drupal覆盖物? ...

12  水平形式元素  ( Horizontal form elements ) 
我已经描述了表格,但是每个元素都位于前一个元素下面。我需要描述所有元素将水平放置但不是垂直放置的表单。 这是我的形式: function contact_register_form($form, &$form_state) { $form['description'] = array( '#type'...

22  触发的多个值#states  ( Multiple values to trigger states ) 
如何具有多个值触发表单API的#states? 例如,我希望这个字段不仅可以看到该字段,不仅要有5(目前在下面工作),而且希望如果值为3,4或5. ,则希望使字段可见。 '#states' => array( 'visible' => array( ':input[name="field_s...

1  个人联系方式  ( Personal contact forms ) 
在eBay-ISH"联系人" 简单表单中获得"联系用户" 表单的最佳方法是在节点上获得"联系用户" 形式? 我尝试了联系人/联系人表格模块,但我不希望获得网站的联系表单可以访问(不想使用它),我希望Mollom / CAPTCHA集成和发送匿名用户的限制。 我想也许我可以做webform,但我看不到一种方法来制作收件...

8  调试#ajax和formapi  ( Debugging ajax and formapi ) 
在使用 #ajax 时,查看当前 $form_state 变量的最简单方法是什么?? 有没有办法,我可以获得 dpm() 在每个ajax加载时自动更新? 如果它很重要,我正在测试节点提交表单上的ajax。 ...

2  该内容是什么?  ( What to include ) 
我在root或模块内写入自己的php程序,这是一个假设返回注册表单。 abc.php程序的内容是: <?php $form1=drupal_get_form('user_register_form'); $output1 = drupal_render($form1); echo $output1; ...

1  渲染由drupal_get_form检索的drupal表单  ( Render a drupal form retrieved by drupal get form ) 
在drupal 7中,我有一个预处理函数检索形式,如: $contact = drupal_get_form('privatemsg_new'); $ contact是一个完全填充的表单数组,具有正确的字段和元素。之后,我尝试了Drupal_Render并呈现,但既不是节点中的主题输出。我要做什么来显示表...

2  将当前节点标题添加为评论表格标题的值?  ( Adding the current node title as the value of the comment form title ) 
我希望以评论表格自动添加到标题文本字段的值;该值确实是当前节点标题。 我已经开始工作 hook_form_alter() (在已经安装和启用的自定义模块中添加): function ta_module_form_alter(&$form, &$form_state, $form_id) { if ...

17  设置选择列表默认值[已关闭]  ( Set select list default value ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 关闭 3年前。 ...

17  在网站联系表单中添加额外字段  ( Adding extra fields to site contact form ) 
这对我来说似乎很困难。我认为只有添加额外字段的情况,就像将字段添加到内容类型一样。但不是。我无法找到任何设施要将电话号码字段添加到联系人表格中?有人知道吗? ...

2  覆盖用户注册页面  ( Override user registration page ) 
我想覆盖用户注册页面,但我的代码无法正常工作,它通常是用于Drupal 6。 function mytheme_theme(&$existing, $type, $theme, $path) { $hooks['user_login_block'] = array( 'template' => '...

0  在节点上更改节点所有者  ( Change node owner on node submit ) 
如何在初始节点创建时更改匿名提交节点的所有者? 目标: 匿名用户完成表单。 节点所有者更改为特定的用户ID。 节点插入DB中。 可以使用 hook_form_FORM_ID_alter(); 来完成 ...

0  更改表单单个选择元素以多选择用于启用的用户的JS  ( Change form single select element to multi select for js enabled users ) 
我希望有一个公开的过滤器,默认显示单个选择,但对于js用户可以被更改为多选择。 原因是我想应用jQuery插件选择在我的多选择上元素。但是,对于非JS用户,页面上同一块空间中的纯多选择元素将既不稳健又笨重,因此我更愿意将它们倒回单个选择下拉菜单。 我猜我可以轻松地使用jQuery将单个选择更改为多选择,但这是防止Dr...

7  如何使用form_set_error设置多个错误消息?  ( How to set multiple error messages with form set error ) 
我注意到我可以将消息变量传递给 form_set_error() 。 如何在多条消息中传递? 我试过调用 form_set_error()几次,但总是显示第一个。 所以,总结我想要显示这样的东西: 错误1 错误2 错误3 目前,我只能得到: 错误1 然后,一旦用户纠正它,并重新提交它,它们会得到: ...

0  在自定义模块中更改[已关闭]  ( Form alter in a custom module ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 closed 5年前。 ...

2  为用户提供剥离的添加节点页面,然后需要管理员批准  ( Give users a stripped down version of add node page and then require admin appro ) 
我想为我的用户提供"添加节点" 页面的剥离版本,以创建各种内容类型的节点。一旦它们填写剥离的向下版本(较少的字段和选项),管理/编辑器可以手动批准每个节点,并填写不以剥离的形式的字段。我可以使用什么方法或模块来实现这一目标? 例如,用户将填写标题,正文,标签,管理员将填写自定义字段,例如Imagefield,File...

1  hook_node_validate在删除时调用?  ( Hook node validate called on delete ) 
为什么我的 <代码> hook_node_validate 在尝试通过节点编辑表单删除节点时被调用(通过单击表单底部的删除按钮)?验证触发,然后我的节点不会被删除,这不是我想要的。 我可以删除在 998876666 中的删除链接时没有任何问题,但是当验证触发和失败时,没有键单击节点编辑表单上的删除按钮。什么可能是验...

2  pass user_register form field值以Pardot额外处理  ( Pass user register form field values to pardot for extra processing ) 
我需要通过注册期间提交的值 pardot 使用表单处理程序。 如何完成任务? ...

2  如何使用hook_form_form_id_alter()在用户配置文件中折叠“区域设置”(时区);  ( How to collapse locale settings timezone in user profile with hook form form ) 
我似乎无法获取"区域设置设置" 字段集以使用hook_form_form_id_alter()折叠。 这是我迄今为止尝试过的东西。 function fsrsys_form_user_profile_form_alter(&$form, &$form_state, $form_id) { $form['...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.