代码之家  ›  专栏  ›  技术社区  ›  Linda

Drupal6从提交的表单中获取节点标题

  •  1
  • Linda  · 技术社区  · 14 年前

    我使用form\u alter编辑内容时的提交功能。在我的自定义函数中,我希望用标题名称编辑屏幕上的自定义消息。我想我可以这样做的方法如下

    function mymodule_myfunction(&$form) {
        drupal_set_message(t('Some text ' . $form['#node']->title));
    }
    

    标题未连接到“Some text”

    我在表单中使用以下行调用我的函数:

    $form['#submit'][] = 'mymodule_myfunction';
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   John Fiala    14 年前

    所有submit函数都会得到两个传递给它们的参数:$form,它是对hook\u form\u alter等进行所有调整之后的最终表单数组,以及$form\u state,它在其他值中包含提交的值,这些值已经被清理并检查了范围。(例如,如果选择框中有三个项目,$form\u state['values']中的数据已经确保该输入的值是三个合法值之一。)

    试试这个:

    function mymodule_myfunction($form, &$form_state) {
      drupal_set_message(t('Some Message @title'), 
      array('@title' => $form_state['values']['title'])));
    }
    

    注意正确使用 t() 函数-该函数的目的是允许其他用户翻译文本,因此通过使用'Some Message@title',翻译人员可以了解更多正在发生的事情。此外,您还可以获得这样的优势,即以这种方式通过t函数输入的文本也可以通过 check_plain() ,防止有人对输入进行恶意操作。

        2
  •  0
  •   Community CDub    8 年前

    DKinzer

    drupal_set_message(t('Some Text '.$form['#post']['title']));
    
        3
  •  0
  •   dkinzer    14 年前

    function mymodule_myfunction(&$form) {
        drupal_set_message(t('Some text ' . $form['#node']->title));
    }
    

    收件人:

    function mymodule_myfunction($form, &$form_state) {
        drupal_set_message(t('Some text ' . $form['#node']->title));
    }
    

    还可以尝试安装devel模块,这样您就可以执行以下操作

    dsm($form);
    dsm($form_state);
    

    看看你到底在处理什么。

    hook_nodeapi ;

    它可能看起来像这样;

    function modulename_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
    
    if ($op == 'insert' && $node->type == 'my node  type') {
      drupal_set_message($node-title . ' is cool.');
    }
    }