it-swarm-ko.tech

각 양식 요소의 (Un-) 서식

우리가 다음과 같은 것을 선언 할 때

$form['textfield'] = array(
  '#type' => 'textfield',
  '#title' => 'textfield title',
  '#maxlength' => 8,
  '#required' => true,
);

출력은 다음과 같습니다.

<div id="edit-textfield-wrapper" class="form-item">
  <label for="edit-textfield">textfield title: <span title="This field is required." class="form-required">*</span></label>
  <input type="text" class="form-text required" value="" size="60" id="edit-textfield" name="textfield" maxlength="8">
</div>

그러나 일부 필드에서 divlabel 컨테이너를 제거하려고합니다.

<input type="text" class="form-text required" value="" size="60" id="edit-textfield" name="textfield" maxlength="8">

가능합니까? 어딘가에 예가 있습니까?

7
acm

theme('form_element')이 호출 될 때 호출되는 테마 함수를 변경하려면 hook_theme_registry_alter () 를 구현하면됩니다. 일반적으로 호출 된 테마 함수는 theme_form_element () 입니다.

function theme_form_element($element, $value) {
  // This is also used in the installer, pre-database setup.
  $t = get_t();

  $output = '<div class="form-item"';
  if (!empty($element['#id'])) {
    $output .= ' id="' . $element['#id'] . '-wrapper"';
  }
  $output .= ">\n";
  $required = !empty($element['#required']) ? '<span class="form-required" title="' . $t('This field is required.') . '">*</span>' : '';

  if (!empty($element['#title'])) {
    $title = $element['#title'];
    if (!empty($element['#id'])) {
      $output .= ' <label for="' . $element['#id'] . '">' . $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) . "</label>\n";
    }
    else {
      $output .= ' <label>' . $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) . "</label>\n";
    }
  }

  $output .= " $value\n";

  if (!empty($element['#description'])) {
    $output .= ' <div class="description">' . $element['#description'] . "</div>\n";
  }

  $output .= "</div>\n";

  return $output;
}
function mymodule_theme_registry_alter(&$theme_registry) {
  if (isset($theme_registry['form_element']) {
    $theme_registry['form_element']['function'] = "theme_mymodule_form_element";
  }
}

theme_form_element() 코드를 사용하여 고유 한 테마 함수를 작성하고 원하지 않는 HTML 태그를 제거 할 수 있습니다. theme('form_element')은 양식 API를 사용하여 모든 양식 요소 출력에 대해 호출됩니다. 양식 요소의 HTML 출력을 변경하려면 #type 값을 확인해야합니다.
theme_textfield () 텍스트 필드를 테마로하는 테마 함수이지만 theme_form_element()에서 이미 출력 한 레이블 또는 줄 바꿈 <div>은 출력하지 않습니다. .

또는 theme_form_element()을 대체하는 테마에서 수행 할 수 있습니다.
어떤 접근 방식을 사용해야하는지는 특정 테마에서 출력을 변경해야하는지 여부 또는 Drupal 사이트에서 활성화 된 모든 테마) 후자에 따라 다릅니다. 모듈에보고 한 후크를 구현해야합니다.

4
kiamlaluno

내가 아는 한 <div> 테마 (테마를 수정하지 않은 경우).

0
Ek Kosmos