0

在drupal 7 方面需要帮助。我是drupal 的新手。

我在下面有验证和验证错误的代码,它工作正常。但是错误总是出现在错误的地方。

我认为 $element 中的问题,但我确定。

一些示例html

    <form id="webform_client_form_226">
<div class="catalogue__form-input-inner">
    <div class="catalogue__form-input">
        <div class="form-item">
            
            // i need it here
            
            <label for="edit-submitted-vashe-imya--3">Your name</label>
            <input name="submitted[vashe_imya]" value="" size="60" maxlength="128" class="form-text error">
        </div>
    </div>
    
    <div class="catalogue__form-input">
        <div class="form-item webform-component webform-component-textfield webform-component--nomer-telefona webform-container-inline">

            // and here

            <label>Phone number</label>
            <input name="submitted[nomer_telefona]">
        </div>
    </div>
    
    <div class="catalogue__form-button">

    // always appears here right now

        <div class="form-actions">
            <input name="op" value="send"></div>        
        </div>
    </div>
</div>

和模板.php

function pkpro_uikit_form_alter(&$form, &$form_state, $form_id) {
    // Check the form id
    if($form_id == 'webform_client_form_226') {
    $form['#validate'][] = 'form_validate';
    }
    }
        
    function form_validate(&$form, &$form_state) {
    $message = "Field required";
    
    if(isset($form_state['values']['submitted']['vashe_imya'])) {
    $name = $form_state['values']['submitted']['vashe_imya'];
    if( condition ) {
    form_error($form['submitted']['vashe_imya'], $message);
    }
    }
    if(isset($form_state['values']['submitted']['nomer_telefona'])) {
    $name = $form_state['values']['submitted']['nomer_telefona'];
    if( condition ) {
    form_error($form['submitted']["nomer_telefona"], $message);
    }
    }
      // get all validation errors. 
      $form_errors = form_get_errors();
      
      if (!empty($form_errors)) {
        foreach ($form_errors as $element => $error) {
          $form[$element]['#suffix'] = '<div>'.$error.'</div>';
        }
      }
      // clear default error messages.
      drupal_get_messages('error');    
    }

帮助,请)

4

1 回答 1

0

您需要修改您的模板。寻找page.tpl.php。它应该有一个$message变量。将其移动到正确的位置。如果您只希望它用于一种内容类型或页面,请复制page.tpl.php它,使其仅针对您想要的内容。

于 2020-07-01T15:05:45.073 回答