2010-03-09 6 views
2

CCK 노드가 제출되거나 편집 된 후 본문 필드에 문자열을 추가하려고합니다. 그러나, 폼에서 변경 작업을 수행하는 데 문제가 있습니다. 내 첫 번째 시도는 . 연산자를 사용하여 본문 필드에 문자열을 추가하여 제출 처리기의 본문 필드를 수정하는 것이 었습니다.Drupal의 본문 필드에 텍스트 추가하기

//Calling this submit function to add string to body. 
function appendToBody_submit_function($form, &$form_state) { 
$form_state['values']['body'] = array('0' => array('value' => $form['#body'])) . $stringToAppend; 
} 

그러나이 방법을 사용할 수는 없지만 올바른 방법이라고 확신하지 못합니다. 나는 드루팔 (Drupal)에 새로운 사람이 나를 올바른 방향으로 향하게 할 수 있습니까? 이것에 node_api를 사용해야합니까?

답변

0

의 내용을 쉽게 인쇄 할 수 있도록 Devel module을 설치하는 것이 좋습니다 (dpm($form_state);). 나는 보통 값이 어디 있는지/내가 기대하는 바가 있는지 확인하기 위해 시작한다.

// Replace "hook" in the function name with the name of your module. 
function hook_submit($form, &$form_state) { 
    // dpm($form_state); // Debug code to view the contents of $form_state. 
    $body = $form_state['values']['body'] . ' new string to append'; 
    // Place code to save this data to your database here. 
} 
+0

@jwhat을 - "에 의해 이 데이터를 데이터베이스에 저장하려면 여기에 코드를 입력하십시오. " - 삽입/업데이트를 의미합니까? 나는 항상 $ form_state 변수를 조작했습니다. 업데이트 일 경우 어떻게 작동하는지 알지만 새로운 노드 인 경우 어떻게 작동하는지 알 수 없습니까? – newGuy

+0

표준 전송 처리기가 호출되기 전에 조작이 발생하면 명시 적으로 데이터를 저장할 필요가 없습니다. 이에 대한 별도의 답변을 참조하십시오. –

+0

예.이 경우 명시 적으로 데이터를 저장하지 않아도됩니다. 다음과 같이 과제를 변경해야합니다. (Henrik 명시) $ form_state [ 'values'] [ 'body'] = $ form_state [ 'values'] [ 'body']. $ stringToAppend; – jwhat

1

나는 당신이 당신의 사용자 정의 hook_form_alter()를 통해 양식에 #submit 배열을 콜백을 제출 추가한다고 가정합니다.

앞에 추가하면 (그냥 붙이는 것과는 대조적으로) 표준 제출 기능보다 먼저 콜백을 호출해야합니다. 그런 식으로, 당신이 오직 할 필요가있는 '장소'를 $form_state['values']['body'] 내용을 조정하고, 내재적 콜백 제출 표준에 의해 추가 처리에 집어 (및 이후 저장)됩니다

/** 
* Implementation of hook_form_alter() 
*/ 
function yourModule_form_alter(&$form, $form_state, $form_id) { 
    // Is this a node edit form? 
    if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id) { 
    // Yes, add custom submit handler *before* already existing ones 
    array_unshift($form['#submit'], 'appendToBody_submit_function'); 
    } 
} 

// Custom submit function to add string to body. 
function appendToBody_submit_function($form, &$form_state) { 
    $form_state['values']['body'] = $form_state['values']['body'] . $stringToAppend; 
} 
+0

중고 경이로운 경이! 나는 또한 hook_form_alter에 접속하여 편집 모드에서 이전에 무조건적인 '새로운 문자열'내용으로 저장된 필드의 경우 '열어 본'필드를 수정했습니다. (* 명성 * Henrik) –

관련 문제