【问题标题】:$op variable for form_alterform_alter 的 $op 变量
【发布时间】:2010-03-03 21:05:17
【问题描述】:

在处理表单时,我很难使用 $op 变量。看来$op变量一般是node_api的一部分(我还没有真正用过),但是alter表单中的$op变量呢?

当节点被编辑和创建时,如何让我的表单改变应用?

【问题讨论】:

  • “当节点被编辑与创建时”是什么意思?这是您正在谈论的网络表单吗?还是一些自定义表单?
  • @Mike Crittenden - 这是一个 CCK 节点形式。通过创建,我的意思是转到路径 node/add/my-contnent-type,而不是转到已经在 node/1000/edit 处创建的节点。当然,也有“视图”,它不显示实际的形式,而是显示现有节点的值。

标签: forms drupal


【解决方案1】:

hook_form_alter() 中没有 $op 变量。从创建表单中辨别节点编辑的标准方法是查看节点是否已经具有 nid(节点 ID)。如果它有一个,你知道它是一个已经存在的,否则它仍在创建过程中:

function yourModule_form_alter(&$form, &$form_state, $form_id) {
  // Is this a node edit/create form at all?
  if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id) {
    // Yes, is the node an already existing one?
    if (isset($form['#node']->nid)) {
      // Yes, existing node, add manipulation for node edit form
    }
    else {
      // No, new node, add manipulation for node create form
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多