1

我想知道,除了提交按钮之外,有谁知道如何在 Drupal 7 中向网络表单添加另一个按钮?我尝试通过谷歌浏览并在 Drupal 论坛上提出这个问题,但没有运气。有人可以帮忙吗?

4

4 回答 4

1

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 modules 的 name。我也稍微修改了 hook_form_alter。我建议您将提交按钮移到 下$form['actions'],这样它就会出现在当前提交按钮旁边。

清除缓存:

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

要查找 weform 表单 ID:

教程在网上讨论如何找到表单 id。请注意,表单标签中使用的 id 将带有“-”(连字符),必须将其替换为“_”(下划线)才能获得表单 ID。

另一种方法是打印 hook_form_alter 中的 $form_id 变量(我们上面定义的函数)并访问 webform 页面。如果该页面上没有其他表单,则打印的 id 将是与 webform 对应的那个。如果启用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) {

之后删除dpm( $form_id );

于 2013-02-18T00:12:55.187 回答
0

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

于 2014-06-19T09:51:50.637 回答
-1

您可以在网络表单中使用类型标记。为标记设置主题,因为它看起来像与提交按钮相同的按钮。

并为此编写JS。例如,您想提供重置按钮,然后 onclick 事件应该清空这些字段中的值。尝试这个。

于 2013-02-14T04:59:12.117 回答
-1

首先在 webform 中为按钮创建标记,然后使用 java 脚本单击此按钮,它会根据您的要求处理请求。

于 2013-02-14T04:59:40.010 回答