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);
      }

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

  • 相关阅读:
    java虚拟机小贴士之GC分析
    hystrix文档翻译之工作原理
    hystrix文档翻译之开始使用
    SQLALchemy--ORM框架
    PythonWEB框架之Flask--3
    补充
    PythonWEB框架之Flask--2
    PythonWEB框架之Flask
    centos6.8下redis的安装和配置
    celery
  • 原文地址:https://www.cnblogs.com/qinqiu/p/4498344.html
Copyright © 2011-2022 走看看