10

drupal 7のフォームAPIを使用して、「送信」タイプのボタンではなく、通常の「ボタン」タイプのボタンを作成しようとしていますが、取得できないようです。

#typeを「button」に設定したり、#button_typeを「button」に設定したりするなど、さまざまなことを試しましたが、何をしても、drupalは常に「submit」タイプのボタンを作成します。

4

6 に答える 6

12

次を使用できます。

"#executes_submit_callback" => FALSE

「送信」ステップを無効にします。

「検証」ステップのみを無効にする場合は、次を使用します。

"#limit_validation_errors" => array()
于 2011-04-26T15:15:16.470 に答える
3

Drupal 7では、これは次を追加することで実現できます。

'#attributes' => array('onclick' =>'return(false);')、

ボタンの定義に。例えば:

$form['my_form'] = array(
 '#type' => 'button',
 '#attributes' => array('onclick' => 'return (false);'),
 '#value' => t('My Button'),
 '#prefix' => t('<div class="myButton">'),
 '#suffix' => t('</div>')
);

これは私のアプリケーションで機能しました。

参照:https ://www.drupal.org/node/283065の[ボタンの無効化とオーバーライド]

于 2015-01-21T16:31:07.877 に答える
2

この問題の背景を確認してから、この回避策を検討することをお勧めします。#markupを使用して手動で挿入できる場合もあります。

于 2011-01-06T20:38:30.770 に答える
2

非常に簡単なサイドステップは、フォームで次のとおりです

$form['your-form-element'] = array(
    '#type' => 'button',
    '#name' => 'any-name',
    '#value' => t('Button Text'),
);

そしてあなたのフォームのテンプレートで:

print str_replace('type="submit"', 'type="button"', drupal_render($form['your-form-element']));
于 2012-02-21T14:29:54.947 に答える
1

テンプレートのtemplate.phpファイルに次の関数を追加します。

function templatename_button($variables) {
  $element = $variables['element'];
  $type = strtolower($element['#button_type']);
  switch($type){
    case 'submit':
    case 'reset':
    case 'button':
      break;
    default:
      $type = 'submit';
      break;
  }
  $element['#attributes']['type'] = $type;

  element_set_attributes($element, array('id', 'name', 'value'));

  $element['#attributes']['class'][] = 'form-' . $element['#button_type'];
  if (!empty($element['#attributes']['disabled'])) {
    $element['#attributes']['class'][] = 'form-button-disabled';
  }

  return '<input' . drupal_attributes($element['#attributes']) . ' />';
}

そしてあなたの形で

  $form['mybutton'] = array(
    '#type'  => 'button',
    '#value' =>  t('mytext'),
    '#button_type' => 'button',
  );
于 2011-08-04T22:55:37.247 に答える
0

フォームを送信するためにデフォルトのボタンを定義する必要がある場合がありますが、drupalのすべてのボタン要素( #type=button、 )は常に属性であるため、必要なデフォルトのボタンを指定するようにこの属性を変更する必要があります。submitTYPE"submit""button"

  1. フォーム要素をレンダリングし、TYPE属性を置き換えます。

    echo strtr(drupal_render($form['btn']), array('type="submit"' => 'type="button"'));

  2. フォーム定義を変更します。

    form['btn']['#attributes'] = array('onclick' => 'this.type="submit"');

于 2013-04-02T09:44:36.807 に答える