質問

私はwebform_form_alterを使用して、いくつかのWebフォームの検証をやっています。私は、フィールドを「選択」上の特定のコンテンツを切り替えるので、私はwebform_form_alterを使用しています。

私のWebフォームフォーム-317.tpl.phpで、私は、私は、この新しいフィールドセットとWebフォームからの設定解除の元に私のフィールドを設定し、新たなフィールドセットを定義します。

$form['submitted']['ContactInfo'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="ContactInfo">',
'#suffix' => '</div>',
'#weight' => -10,
'#title' => 'Contact Information'
);

$form['submitted']['ContactInfo']['phone_home'] = $form['submitted']['phone_home'];
unset($form['submitted']['phone_home']);

私のwebform_form_alterに、私は次のコードを持っています:

switch ($form_id)
{
case 'webform_client_form_317':
{
$form['#validate'][] = 'validate_form';
}
}

私のValidate_form関数次のようになります。

function validate_form($form_id, $form_values)
{
      if ($form_values['submitted_tree']['ContactInfo']['phone_home'] == "")
      {
             form_set_error('phone_error', t('Please enter a home phone number.'));
      }
}

問題は$ form_values [「submitted_tree」] [「のContactInfo」] [「phone_home」]でも、ユーザーがテキストフィールドに何かを入力したされます。

何として戻ってくるということです

私が間違ってやっている上の任意の提案?

私は、彼らが必須フィールドの残りの部分と赤で表示させ、「フォーム・テキストに必要なエラー」のクラスを設定するには、これらのテキストフィールドの変更はどうすればよい場合も同様の誰かでは2つ目の質問の答えとして、。

おかげ

役に立ちましたか?

解決

私はあなたのWebフォームモジュールにこのコードを書いていないが、それのためのあなたのAカスタムモジュールを作っている願っています。

最初のケースでは、あなたの関数をする必要があります。

function validate_form($form, &$form_state) {
    if ($form_state['values']['submitted_tree']['ContactInfo']['phone_home'] == "") {
         form_set_error('phone_home', t('Please enter a home phone number.'));
    }
}

あなたがエラークラスについて話している場合は、Drupalは上記のコードで行われているようなエラーが設定されているすべてのフィールドに追加します。あなたはform_set_error関数への最初のパラメータとして、フォームフィールドの名前に渡す必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top