我有一种情况,我希望一组用户(员工)能够创建一个节点,但用当前用户配置文件替换用户标识(用户标识)显示。Drupal 6:修改提交的节点的用户标识
换句话说,我有一个块调用内容类型的表单。如果雇员(uid = 20)转到客户页面(uid = 105)并填写表单,我希望与表单关联的uid成为客户(105),而不是雇员的。
我使用ARG(1)抓住客户的UID - 这里就是我..
<?php
function addSR_form_service_request_node_form_alter(&$form, $form_state) {
if (arg(0) == 'user' && is_numeric(arg(1))) {
$form['#submit'][] = 'addSR_submit_function';
}
}
function addSR_submit_function($form, $form_state) {
$account = user_load(arg(1));
$form_state['values']['uid'] = $account->uid;
$form_state['values']['name'] = $account->name;
}
?>
的形式加载在块,但提交的时候,依然呈现出员工的UID 。我不想使用hook_form_alter,因为我不想修改实际的表单,因为客户端可以直接填写表单,在这种情况下,我根本不想修改表单。
我也惭愧,我把这个块中的,但我不能想办法把这个模块中,等等,任何建议都还可以理解的......
感谢Googletorp,这是一个非常简洁的答案。我安装了表单块,并创建了一个名为addSR(替换小马)的模块。 formblock模块显示表单,但它仍然传递原始的uid。有没有一种方法来测试处理程序是否被调用? ---我发布了更新的代码片段... – tpow 2010-01-04 15:08:25
最快的方法是调用drupal_set_message('some text');某处。如果调用它将打印显示验证错误等消息区域中的文本。如果你想做一些严肃的调试,你应该看看devel模块或者看看Firebug的drupal。一个Firebug插件/ Drupal模块组合,它也有一些很好的调试工具。 – googletorp 2010-01-04 15:16:43
好吧,我使用uid&name变量添加了一些“drupal_set_message”,并且所有设置都正确(它正在调用消息),但uid未更改。在它提交给数据库之前,是否有办法通过设置uid来处理表单的处理? – tpow 2010-01-04 15:34:18