일련의 사용자 (직원)가 노드를 만들 수 있지만 현재 사용자 프로필의 uid (사용자 ID)로 바꿀 수있는 상황이 있습니다. 표시됩니다.Drupal 6 : 제출 된 노드의 uid 수정
즉, 콘텐츠 유형에 대한 양식을 호출하는 블록이 있습니다. 직원 (uid = 20)이 클라이언트 페이지 (uid = 105)로 이동하여 양식을 채우는 경우 양식과 관련된 uid를 직원의 것이 아닌 클라이언트 (105)로 지정합니다. 양식이 블록에로드하지만, 제출 된 경우, 여전히 직원의 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;
}
?>
여기에 내가 무엇을 가지고 ... - I (1) 클라이언트의 UID를 잡기 위해 인수를 사용하고
. 클라이언트가 양식을 직접 채울 수 있기 때문에 hook_form_alter를 사용하고 싶지 않습니다. 양식을 직접 수정하고 싶지는 않습니다.이 경우 양식을 전혀 수정하지 않으려 고합니다.
Googletorp에게 감사드립니다. 매우 간결한 답변이었습니다. 폼 블록을 설치하고 addSR (대체 된 조랑말)이라는 모듈을 만들었습니다. formblock 모듈은 양식을 표시하지만 여전히 원래의 uid를 전달합니다. 핸들러가 호출되고 있는지 테스트 할 수있는 방법이 있습니까? --- 업데이트 된 스 니펫을 게시했습니다 ... – tpow
가장 빠른 방법은 drupal_set_message ('some text')를 호출하는 것입니다. 어딘가에. 호출되면 유효성 검사 오류 등이 표시되는 메시지 영역에 텍스트를 인쇄합니다. 심각한 디버깅을 원할 경우 devel 모듈을 살펴 보거나 Firebug의 drupal을 살펴 봐야합니다. firebug addon/drupal 모듈 콤보에도 멋진 디버깅 도구가 있습니다. – googletorp
좋아요, 나는 uid와 name 변수를 사용하여 몇 가지 "drupal_set_message"를 추가했고 모든 것이 올바르게 설정되었지만 (메시지를 호출하는 중이지만) uid는 변경되지 않았습니다.uid가 데이터베이스에 제출되기 바로 전에 uid를 설정 한 후에 양식 처리를 이용할 수있는 방법이 있습니까? – tpow