0

我用这个简单的形式创建了一个 BLOCK(左)。现在我想在 PAGE(中心)上处理和显示结果我该怎么做?

输入:

name = James
surname = Bond

我想要的输出:

<div style="color:red">Welcome, James Bond</div>

这是我编写和工作的一个块。

<?php

echo drupal_get_form('myForm');

function myForm($form_state) {
 $form['name'] = array(
  '#type' => 'textfield',
  '#title' => t('Name'),
  '#size' => 20,
  '#maxlength' => 10
 );
 $form['surname'] = array(
  '#type' => 'textfield',
  '#title' => t('Surname'),
  '#size' => 20,
  '#maxlength' => 10
 );
 $form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Save')
 );
return $form;
}

function myForm_submit($form,&$form_state)
{
 //??
};

现在我需要显示输出:)。

请不要建议使用 VIEWS 或任何其他插件。

我想从内到外学习 Drupal。不是相反;)

4

4 回答 4

4

好吧,这在一定程度上取决于您想如何做事。由于您正在学习如何制作 drupal 模块,因此您可能希望从hook_menu()的实现开始。这个钩子用于定义菜单项,这基本上意味着您可以使用该函数注册 url。走这条路,你可以:

  1. 实现 hook_menu()
  2. 处理重定向的一般方法是使用drupal_goto()$form_state['redirect']但是,在这种情况下,使用Henrik 在他的评论中解释的更合适。
  3. 对于您要重定向到的 url,您应该有一个回调函数,您可以在其中放置逻辑,设置 hook_menu 的方式和回调函数将决定您如何获得可用的变量。您可能想查看arg()函数,该函数通常用于从 url 获取值。
  4. 通过过滤器运行用户输入以确保他们没有发布诸如脚本标签等讨厌的东西,使用check_plain
  5. 返回一个主题函数,或者自己制作,看看theme()hook_theme()

有更快的方法可以做到这一点,但是这样做,您将为 drupal 可以缓存的每个搜索结果生成 url,这很好。也不依赖于帖子参数,人们可以为搜索结果添加书签

另一件事是您可能希望对表单进行一些基本验证。这将是一个很好的学习习惯。看起来像这样:

/**
 * Validation handler for myForm.
 */
function myForm_validate($form, &$form_state) {
    $name = $form_state['values']['name'];
    // do some checks to $name.
    if ($error) {
        form_set_error('name', t('error message to be displayed, showing the value of the field: @name', array('@name' => $name);
    }
};
于 2009-10-02T15:47:17.680 回答
0

您可以在表单中实现 AHAH,并将页面内容区域内的元素指定为“包装器”(将放置回调函数结果的元素)。但是,在您尝试之前,您需要了解欧宝先生的出色建议。

于 2009-10-08T17:14:25.080 回答
0

如何使用 drupal_set_html_head() 将一串脚本写入页面的 head 部分?我在特定页面上执行此操作(获取用户纬度和经度并将它们传递到我的 gMap 函数中),但我对直接从 hook_form_submit() 中做同样的事情感兴趣。我已经尝试了几次,我显然正在输出脚本字符串,但从提交调用函数似乎不起作用。

于 2010-09-08T04:58:27.667 回答
0

如果提交函数创建了一个充满 html 输出的页面;将此传递给页面回调的最佳方法是什么?我怀疑在 url 上作为 arg 传递是否可行。

我塞进了一个会话变量,但也许是更好的方法?

于 2011-01-03T22:26:18.813 回答