Спросите дважды по электронной почте на странице оформления заказа Ubercart - PullRequest
2 голосов
/ 14 января 2011

Есть ли модуль Ubercart, чтобы попросить пользователя дважды ввести свою электронную почту на странице оформления заказа?

Ответы [ 3 ]

2 голосов
/ 25 января 2014

В настройках оформления заказа Ubercart есть флажок подтверждения по электронной почте.Никаких дополнительных модулей не требуется.

1 голос
/ 26 января 2012

Я получил это с помощью этого:

/* Code to add confirm email for uc checkout */
function custom_code_form_alter(&$form, $form_state, $form_id) {
    if($form_id == "uc_cart_checkout_form" && $form['panes']['customer']['primary_email']['#type'] != 'hidden'){    
        $form['panes']['customer']['primary_email']['#weight'] = '0';
        $form['panes']['customer']['new_account']['#weight'] = '2'; 
        $form['panes']['customer']['confirm_email'] = array(
            '#title' => t('Verify E-mail address'),
            '#type' => 'textfield',
            '#size' => '32',
            '#required' => true,
            '#weight' => '1'
        );
        $form['#validate'][] = 'custom_code_validate_confirm_email';
    }
}
function custom_code_validate_confirm_email(&$form, &$form_state){
    if($form_state['values']['panes']['customer']['primary_email'] != $form_state['values']['panes']['customer']['confirm_email']) {
        form_set_error('panes[customer][confirm_email', t('Email addresses must match.'));
    }   
}
/* end code for confirm_email */
1 голос
/ 14 января 2011

Сомневаюсь, что для этого есть модуль.Вы можете сделать это с помощью hook_form_alter в пользовательском модуле.Должно быть только 10-20 строк кода.

Что-то вроде

function module_form_FORM_ID_alter(&$form, &$form_state) {
  $form['...']['second_mail'] = array(
    '#title' => t('Verify E-mail'),
    '#type' => 'textfield',
    '#weight' => xx,
  );

  $form['#validate'][] = 'module_validate_function_name';
}

function module_validate_function_name(&$form, &$form_state) {
  if ($form_state['values']['mail'] != $form_state['values']['second_mail']) {
    form_set_error('second_mail', t('You have mistyped your e-mail, please verify');
  }
}

Выше приведен пример кода, но он может на самом деле работать, это зависит от того, как создается форма проверки Ubercart, более конкретно, имя его почтового поля.

Есть несколько пробелов, но их должно быть достаточно легко заполнить.

...