【问题标题】:Change field value and submit node with a custom button更改字段值并使用自定义按钮提交节点
【发布时间】: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


【解决方案1】:

我假设您正在一个名为 iu_buttons 的自定义模块中编写此代码,并且您希望在节点页面中显示此按钮,而不是在节点编辑表单中。

在这种情况下,问题在于您从未在提交函数中保存节点。这是您的提交函数的一个版本,它将保存节点。

function submit_button_form_submit($form, &$form_state) {
    $node = menu_get_object(); //get the current node
    $node->field_status['und'][0]['value']['#value'] = 'submitted';
    node_save($node); // save the changed node
}

我认为您可能对仅保存字段感兴趣,而无需保存整个节点。在这种情况下,您可以使用以下内容:

function submit_button_form_submit($form, &$form_state){
   $node = new stdClass(); // Create empty object
   $node->nid = intval(args(1)); // Include the nid so that Drupal saves the new value to the correct node
   $node->field_status['und'][0]['value']['#value'] = 'submitted';
   field_attach_update('node', $node); // Save the field
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多