2011-05-29 59 views
1

我正在开发一个Drupal的模块,它提供了一个登录表单,并在提交用户cURL后用其他网站上的凭据登录。发送变量给用户配置文件在Drupal 6

如果一切顺利,模块会将用户重定向到他们的配置文件,并应显示提取的信息cURL。这是事情出错的地方。

我想要做的是通过用户名得到$account变量。这是所有在module_name_form_submit功能:

$account = user_load(array('name' => check_plain($user))); 

然后追加我想要显示它的数据:

$account->content['module_name'] = array(
    '#title' => t('Module Title'), 
    '#values' => get_info() 
    ); 

如果我重定向之前做了print_r,果然,该数据是有正如它应该。但重定向后:

$form_state['redirect'] = "users/{$user}"; 

我不再有权访问相同的数据。所以问题是,如何以永久方式设置该变量并在用户配置文件页面中重定向后访问它? (我试图避免会话)。

在此先感谢:-)

+0

您需要将什么样的值传递到用户页面?一个字符串? – Strae 2011-05-29 23:41:43

+0

p.s:试试在这里问:http://drupal.stackexchange.com/我敢打赌,你会得到更多的运气 – Strae 2011-05-29 23:42:16

+0

我想传递一个数组。然后我可以使用tpl文件来呈现这些信息。谢谢@DaNieL – brpinto 2011-05-29 23:47:45

回答

1

如何使用variable_set($ name,$ value);根据你的问题:

variable_set('module_name_variable', $account); 

当你需要访问数据使用variable_get($名称,$默认);根据你的问题:

variable_get('module_name_variable'); 

请让我知道它是否适合你。

谢谢

+0

它工作。我使用了'variable_set('var_name',the_array);'然后我实现了一个hook_user函数,所以在重定向之后,我可以执行'variable_get('var_name')'并获取所有数据。谢谢:-) – brpinto 2011-05-30 14:34:28

+0

尽管这种方法的工作原理并不是最好的方法,因为'variable_get/set/etc'清除了所有缓存,这会降低你的网站并填满变量表。所以我想我必须和会议一起去。 – brpinto 2011-05-30 16:17:35

0

也许你可以使用value form element用户价值添加到您的形式。

$form['userdata'] = array('#type' => 'value', 
        '#value' => $user_load(array('name' => check_plain($user))); 

我认为这可能会做你正在寻找'drupalish'的方式。

希望它有帮助,祝你好运!

+0

不知道它是否有帮助。但我会仔细研究一下......谢谢。 – brpinto 2011-05-29 23:50:36

+0

Value元素是drupal的内部元素,它比隐藏的fied更好。如果你必须传递一个数组,你需要先序列化它。 – stefgosselin 2011-05-30 00:17:18