• Drupal7 自定义表单元素(form element)


    <?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']);
    }
  • 相关阅读:
    vue2.0 练习项目-外卖APP(2)
    vue2.0 练习项目-外卖APP(1)
    迈向全栈开发学习(3)
    迈向全栈开发学习(2)
    迈向全栈开发学习(1)
    前端到后台ThinkPHP开发整站(完)
    前端到后台ThinkPHP开发整站(7)
    前端到后台ThinkPHP开发整站(6)
    前端到后台ThinkPHP开发整站(5)
    uniapp 设置全局scss生效
  • 原文地址:https://www.cnblogs.com/catcat811/p/2108204.html
Copyright © 2020-2023  润新知