Проверка веб-формы Drupal (webform_form_alter)
-
26-09-2019 - |
Вопрос
Я выполняю проверку веб-формы, используя webform_form_alter.Я использую webform_form_alter, потому что переключаю определенный контент в поле «выбрать».
В моей веб-форме-317.tpl.php я определил новые наборы полей. Я установил свои поля в этот новый набор полей и удалил оригинал из веб-формы.
$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['submit_tree']['ContactInfo']['phone_home'] возвращается как ничто, даже если пользователь ввел что-то в текстовое поле.
Любые предложения о том, что я делаю неправильно?
В качестве второго вопроса, если кто-то также ответит, как мне изменить эти текстовые поля, чтобы установить класс для «ошибки, требуемой для текста формы», чтобы они отображались красным цветом вместе с остальными обязательными полями.
Спасибо
Решение
Надеюсь, вы не пишете этот код в модуле веб-формы, а создали для него собственный модуль.
В первом случае ваша функция должна быть
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
функция.