将文本附加到Drupal中的正文字段

时间:2010-03-09 16:10:43

标签: drupal-6

我试图在提交或编辑CCK节点的主体字段后附加一个字符串。但是,我在使用alter form中的body字段时遇到了麻烦。我最初的尝试是通过使用.运算符将字符串附加到正文字段来修改提交处理程序中的正文字段。

//Calling this submit function to add string to body.
function appendToBody_submit_function($form, &$form_state) {
$form_state['values']['body'] = array('0' => array('value' => $form['#body'])) . $stringToAppend;
}

然而,我无法让它发挥作用,我不确定这是正确的方法。我是Drupal的新手,有人能指出我正确的方向吗?我应该使用node_api吗?

2 个答案:

答案 0 :(得分:1)

我假设您通过#submit将自定义提交回调添加到表单hook_form_alter()数组中。

如果在之前添加该数组中的任何其他条目(而不是仅仅附加它),则应在标准提交函数之前调用回调。这样,您需要做的就是调整$form_state['values']['body']内容',并在隐式进行标准提交回调的进一步处理时拾取(并随后保存):

/**
 * Implementation of hook_form_alter()
 */
function yourModule_form_alter(&$form, $form_state, $form_id) {
  // Is this a node edit form?
  if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id) {
    // Yes, add custom submit handler *before* already existing ones
    array_unshift($form['#submit'], 'appendToBody_submit_function');
  }
}

// Custom submit function to add string to body.
function appendToBody_submit_function($form, &$form_state) {
  $form_state['values']['body'] = $form_state['values']['body'] . $stringToAppend;
}

答案 1 :(得分:0)

我建议安装Devel module,这样您就可以通过将$form_state放在方法正文中轻松打印dpm($form_state);的内容。我通常从那开始,以确保值是我期望的地方。

// Replace "hook" in the function name with the name of your module.
function hook_submit($form, &$form_state) {
  // dpm($form_state); // Debug code to view the contents of $form_state.
  $body = $form_state['values']['body'] . ' new string to append';
  // Place code to save this data to your database here.
}