проверить поле и перенаправление на многошаговой веб-форме - Drupal - PullRequest
0 голосов
/ 01 августа 2011

Я настроил многоэтапную веб-форму на веб-сайте Drupal, и я пытаюсь проверить поле и остаться на первой странице веб-формы, если поле не соответствует условиям.На первом шаге веб-формы пользователь вводит название компании в текстовое поле (имя_компьютера).Когда пользователь нажимает кнопку «Далее», я хочу проверить, является ли введенное название компании названием узла.Пока у меня есть:

function check_for_company_form_alter(&$form, $form_state, $form_id)
{
if ($form_id == "webform_client_form_2")
{   
    if($form_state['post']['details']['page_num'] == 1){
        $comp_name = $form_state['post']['submitted']['comp_name'];
        $query = "SELECT nid FROM node WHERE title='".$comp_name."'";
        $nidComp= db_result(db_query($query));
        if($nidComp>0){
        echo 'we found node id'.$nidComp;
        }
     else{
          //redirection to page 1 of the multistep form
     }
    }


}
} 

Код работает хорошо, но я не могу найти способ перенаправления на страницу 1.

1 Ответ

0 голосов
/ 02 августа 2011

Используйте пользовательский хук проверки и form_set_error.

<?php

...
// within hook_form_alter
$form['#validate'][] = 'check_for_company_validate';
...

function check_for_company_validate($form, &$form_state) {
  // Check if the company name ISN'T the title of a node here.
  // If so...
  form_set_error('post][submitted][comp_name', 'Something is not right.');
}

?>

hook_form_alter срабатывает до построения формы. Звучит так, как будто вы хотите hook_validate или (возможно) hook_submit. Это решение для Drupal 6.

...