zoukankan      html  css  js  c++  java
  • drupal_process_form 的大致流程是怎么样的 ?

    函数原型

    function drupal_process_form($form_id, &$form, &$form_state) {
    //--
    }

    1 初始化 $form_state['values']

    $form_state['values'] = array();

    2 把$form赋值给一个变量, 然后生成新的$form
    form builder 函数主要以下作用
    a 给每个表单元素加上必须的属性值
    b 吧用户输入的值放到#value上
    c, 调用每个表单元素的#process handler
    d, 把用户输入的值放到$form_state['values']下面

      $unprocessed_form = $form;
      $form = form_builder($form_id, $form, $form_state);

    3 如果有用户输入 要验证之

     if ($form_state['process_input']) {
        drupal_validate_form($form_id, $form, $form_state);
    }

    4 如果没有错误 要重置form id static ?

    if (!form_get_errors()) {
          // In case of errors, do not break HTML IDs of other forms.
          drupal_static_reset('drupal_html_id');
        }

    5 运行submit handler

        if ($form_state['submitted'] && !form_get_errors() && !$form_state['rebuild']) {
          // Execute form submit handlers.
          form_execute_handlers('submit', $form, $form_state);
    }

    6 生成form cache

     if (!$form_state['rebuild'] && $form_state['cache'] && empty($form_state['no_cache'])) {
        form_set_cache($form['#build_id'], $unprocessed_form, $form_state);
      }

    -- 这个函数很复杂  真的不懂

  • 相关阅读:
    [Sql Server][原创]
    SQL Server T-SQL高级查询
    SQL 网文链接
    Epicor系统二次开发
    lambda表达式的变量作用域
    写一个正则表达式匹配手机号
    函数装饰器在类方法中的使用方法
    关于Django的session的使用 (装饰器版)
    Django ORM相关操作(2)
    Django ORM相关操作(1)
  • 原文地址:https://www.cnblogs.com/qinqiu/p/4498344.html
Copyright © 2011-2022 走看看