你在这里

drupal 自定义表单元素类型如何实现?求大神帮忙!!!

主标签

<?php

/**

 * Implements hook_element_info().

 */

function example_element_info() {

  $types = array(

    'example' => array(

      '#input' => TRUE,

      '#tree' => TRUE,

      '#process' => array('example_process'),

      '#theme' => array('example'),

      '#pre_render' => array('form_pre_render_conditional_form_element'),请问这个有什么作用?

      '#value_callback' => 'example_value_callback'

    )

  );

  return $types;

}

/**

 * element显示前对element内参数的处理

 */

function example_process($element, $form_state) {

    if(isset($element['default_value'])) {

        $element['#default_value'] = $element['default_value'];

    }

  return $element;

}

/**

 * element呈现的模板

 */

function theme_example($variables) {

  $output = '<input name="example" type="text" value=""/>';

  return $output;

}

/**

 * from submit后,element的最终值

 */

function example_value_callback($element, $input = FALSE, &$form_state) {

  if ($input !== FALSE) {

    // element可以由多个element组成,但只有一个返回值,其他element将不返回

    return $_POST['example'];

  } elseif (!empty($element['#default_value'])) {

    return $element['#default_value'];

  }

  return;

}

/**

 * Implements hook_theme().

 */

function example_theme() {

  return array(

      'example' => array(

        'render element' => 'element',

      )

  );

}

function example_menu()

{

  $items = array();

  $items['test_element'] = array(

    'title' => 'Example',

    'page callback' => 'drupal_get_form',

    'page arguments' => array('example_form'),

    'access callback' => TRUE,

    'expanded' => TRUE,

  );

  return $items;

}

function example_form($form, &$form_state) {

    $form = array();

    $form['example'] = array(

      '#type' => 'example',

      '#title' => 'example',

    );

    $form['submit'] = array(

      '#type' => 'submit',

      '#value' => 'Submit'

    );

    return $form;

}

function example_form_submit($form, &$form_state) {

    drupal_set_message('value: '.$form_state['values']['example']);

}

还有为什么加载完这个模块,用了这个表单元素类型后总提示:

Notice: Undefined index: #type in _form_builder_handle_input_element() (line 1985 of E:\xampp\htdocs\drupal\includes\form.inc).

求各位大神帮帮忙!感激不尽!!

Drupal 版本: 

猜你喜欢