【发布时间】:2018-12-21 21:25:05
【问题描述】:
我正在尝试编写一个向节点类型添加按钮的模块,当按下该按钮时,将更改该节点中字段的值并提交更改。一切似乎都在工作,因为按钮显示正确并且节点在按下时提交,但该字段的值保持不变。我觉得我错过了一些明显的东西。
<?php
function iu_buttons_node_view($node, $view_mode, $langcode) {
if ($node->type == 'billing_entry') {
if ($node->field_status['und'][0]['value'] == 'open') {
$form = drupal_get_form('submit_button_form');
$node->content['submit_button'] = $form;
}
}
}
function submit_button_form($form, &$form_submit) {
$form['submit'] = array(
'#type' => 'button',
'#value' => ('Submit'),
'#submit' => array('submit_button_form_submit'),
);
return $form;
}
function submit_button_form_submit($form, &$form_state) {
$node->field_status['und'][0]['value']['#value'] = 'submitted';
}
可能值得注意的是,我要更改的字段是一个选择列表。我应该使用与 hook_form_submit 不同的函数吗?
【问题讨论】:
-
在我看来,您正在创建一个全新的表单,而不是更改您想要的表单。这意味着您的表单将提交但不会发送原始节点表单的值。使用HOOK_form_alter 更改原始表单,而不是创建自己的表单。
-
您在用户查看节点时显示此按钮,对吗?如果是这样,那么您有两个问题:您的提交函数不保存节点并且它不知道要保存哪个节点。
标签: drupal drupal-7 drupal-modules