我试图在提交或编辑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吗?
答案 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.
}