Drupal 7-如何在网络表单中添加另一个按钮


Drupal 7 - how to add another button to a webform?

我想知道,除了提交按钮之外,有人知道如何在Drupal 7中向网络表单添加另一个按钮吗?我试着浏览谷歌,并在Drupal论坛上问这个问题,但没有成功。有人能帮忙吗?

Webform是一个drupal表单,您可以使用hook_form_alter:假设您有一个名为mymodule的自定义模块,您的Webform id为'Webform_client_form_XXXXX'。然后使用下面的示例代码。

/**
 * Implements hook_form_alter.
 */
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'webform_client_form_XXXXX':
      $form['actions']['custom_submit']  = array(
        '#type' => 'submit',
        '#value' => t('Custom Button'),
        '#submit' => array('mymodule_custom_submit'),
      );
      $form['#validate'][] = 'mymodule_custom_validate';
      break;
  }
}
/**
 * Custom validation handler for your webform.
 */
function mymodule_custom_validate($form, &$form_state) {
  // your validation code
}
/**
 * Custom submit handler for your form
 */
function mymodule_custom_submit($form, &$form_state) {
  // your submit handler code
}

更新:

您必须将上述代码中mymodule的实例替换为yoru模块的名称。此外,我还对hook_form_alter进行了一些修改。我建议您将提交按钮移到$form['actions']下,这样它就会出现在当前提交按钮旁边。

要清除缓存:

访问/admin/config/development/performance并单击清除所有缓存按钮。

要查找weform表单id:

本教程讨论了如何查找表单id。请注意,表单标记中使用的id将有"-"(连字符),必须用"_"(下划线)替换才能获得表单id。

另一种方法是在hook_form_alter(我们在上面定义的函数)中打印$form_id变量并访问webform页面。如果该页面上没有其他表单,则打印的id将是对应于webform的id。如果启用devel模块,那么使用优秀的krumo库可以更容易地显示调试信息。

/**
 * Implements hook_form_alter.
 */
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  // Below function would print out the form id in message area if devel module
  // is enabled on the site.
  dpm($form_id);
  switch ($form_id) {

随后移除CCD_ 3。

知道webform id比上面描述的方法更容易。您只需要转到:content->webforms,并将鼠标光标放在属于您想要id的webforms的编辑选项上。在导航器屏幕下方,将显示node/id格式的原始路径。该节点编号是webform_client_form_XXX中的XXX。

您可以在webform中使用类型Markup。设置标记的主题,使其看起来像与提交按钮相同的按钮。

并为此编写JS。例如,您想要给重置按钮,那么onclick事件应该清空这些字段中的值。试试这个。

首先在webform中为按钮创建标记,然后在点击该按钮时使用java脚本,根据您的需求处理请求。