3

Drupal FAPIを使用してフォームを作成していますが、少し複雑です。私がやりたいのは、ボタンを配置し、ユーザーがボタンをクリックしたときに情報を追加することです。そのため、そのボタンを使用した検証をスキップする必要があります。#limit_validation_errorsプロパティを使用しようとしていますが、機能していないようで、すべての検証を実行しています。

要素をフォームツリーのルートレベルに配置すると、機能することに気づきました。これは私が持っているものです:

$form['application']['education']['add_education'] = array(
    '#type' => 'submit',
    '#value' => 'Add',
    '#submit' => array('_education_submit'),
    '#limit_validation_errors' => array(),
);

上記のコードは機能しませんが、以下のコードは機能します。

$form['add_education'] = array(
    '#type' => 'submit',
    '#value' => 'Add',
    '#submit' => array('_education_submit'),
    '#limit_validation_errors' => array(),
);
4

3 に答える 3

2

Drupal は value 属性を使用して triggering_element を探して比較しているようです。同じ値の別のボタンがあるため、システムは値を台無しにし、他のボタンをクリックしたものと見なします。

コードを修正するには、ボタンの #value プロパティを変更するだけで済みました。ツリー上の位置を変更すると、Drupal が右ボタンを使用したため、機能していました。

于 2012-10-23T07:34:12.777 に答える
1

このプロパティの使用例を次に示します。

$form['add_education'] = array(
    '#type' => 'submit',
    '#value' => 'Add',
    '#submit' => array('submit_function'),
    '#limit_validation_errors' => array(array('_education_submit')),
);
于 2013-03-30T02:15:47.817 に答える