2

エンティティ登録を使用して、ユーザーがイベントに登録できるようにしています。他のフィールドの値に応じて検証したいフィールドがいくつかあります。

したがって、hook_form_id_form_alter を使用して、2 つ目の検証関数を追加することができました。2 番目の関数は、登録フォームを検証するためのコードを追加できることを望んでいた場所です。

function coastal_custom_form_registration_form_alter($form, &$form_state, $form_id) {
  $form['#validate'][] = 'event_registration_form_validate';  
}

しかし、フォームを送信するたびに、検証を行うはずの関数が呼び出されることはありません。

//this function never gets called
function event_registration_form_validate(&$form, &$form_state){
  drupal_set_message('hi from validation');
  form_set_error('you are in form_registration');

}

私は一日中これを行う方法を考えていました。これがどのように行われるかを誰かが理解しましたか?ありがとう。

4

1 に答える 1

1

hook_form_alter の API ドキュメントを読んだところ、$form を参照渡しする必要があることがわかりました。したがって、関数を記述する正しい方法は次のようになります。

function coastal_custom_form_registration_form_alter(&$form, &$form_state, $form_id) {
  $form['#validate'][] = 'event_registration_form_validate';  
}

$form 変数の前にアンパサンド (&) があることに注意してください。

于 2012-09-07T02:19:52.497 に答える