Создание своего типа поля

Опубликовал Максим Баев, 23 июля 2014, 09:41

Для создания своего поля необходимо реализовать три обязательные функции. hook_element_info(), hook_theme() и theme_hook().

К примеру, реализуем тип формы number (пример работы):

hook_element_info()

<?php
/**
 * Implementation of hook_element_info()
 */
function MYMODULE_element_info() {
  $types = array();

  $types['number'] = array(
    '#input'          => TRUE,
    '#default_value'  => 0,
    '#size'           => 60,
    '#theme'          => 'number',
    '#theme_wrappers' => array('form_element'),
    '#process'        => array('ajax_process_form'),
  );

  return $types;
}

hook_theme()

<?php
/**
 * Implementation of hook_theme()
 */
function MYMODULE_theme($existing, $type, $theme, $path){
  return array(
    'number' => array(
      'render element' => 'element'
    ),
  );
}

theme_hook()

<?php
/**
 * Theme func for form item with type 'number'
 */
function theme_number($variables){
  $element = $variables['element'];
  $element['#attributes']['type'] = 'number';
  element_set_attributes($element, array('id', 'name', 'value', 'size', 'min', 'max', 'step'));
  _form_set_class($element, array('form-number'));
  $output = '<input' . drupal_attributes($element['#attributes']) . ' />';
  return $output;
}

Похожие материалы:

Другие посты