2009-10-14 1 views
2

별도의 웹 서비스에 노드 ID 통신이 필요한 Drupal 기반 사이트를 구축 중입니다. 이 웹 서비스는 별도의 서버로 파일 업로드를 처리합니다 (Drupal이 켜져있는 경우).다중 단계 양식을 사용하여 노드를 저장할 수 있습니까?

이렇게하면 새 노드를 만들면 양식이 제출 될 때까지 노드 ID가 생성되지 않습니다. 즉, 노드를 저장하고 다시 열어 편집 할 때까지 파일을 첨부 할 수 없다는 것을 의미합니다 . 그 단계를 제거하고 싶습니다.

노드의 기본 사항이 제출되고 저장되는 두 단계 노드 작성 프로세스를 만들 수 있습니까? 그러면 양식에서 파일을 첨부 할 수있는 2 단계로 리디렉션됩니까?

또한 AJAX를 사용하는 노드 제출 양식을 고려해 볼 수도 있습니다.하지만 이는 상황을 더욱 복잡하게 만드는 것처럼 보입니다.

모든 조언, 사례를 제공합니다.

답변

4

당신은 는 여러 단계의 양식이 작업을 수행 할 수 있습니다. 이 작업을 수행하는 정규 방법은 http://pingv.com/blog/ben-jeavons/2009/multi-step-forms-drupal-6-using-variable-functions을 참조하십시오 (코드 외에도 주석을 확인하십시오).

두 번째 제출 처리기를 양식에 추가하여이 작업을 수행 할 수도 있습니다. 최초의 디폴트 파일 (node_form_submit)은 노드 (첨부 파일 포함)에 표준 Drupal 방식으로 저장합니다. 두 번째 처리기는 파일을 별도의 서버에 업로드하고, 오류 검사를 업로드하고, Drupal DB에서 파일을 삭제할 수 있습니다. Drupal 6 양식에 추가 제출 처리기를 양식의 #submit property에 추가하거나 양식 정의 또는 hook_form_alter/hook_form_FORM_ID_alter을 통해

+1

두 번째 제출 콜백을 추가하는 경우 +1 –

+0

두 번째 제출 콜백은 이미 $ form_state [ 'nid']'의 nid에 액세스 할 수 있으므로'$ form_state [ 'redirect']'를 'node'/[nid]/edit 노드 편집 폼을 제출 한 후 즉시 엽니 다 (두 번째 폼 제출 후 리디렉션을 방지하기 위해 새 노드를 확인해야합니다). –

+0

고마워요! 다중 단계 양식 (표준 노드 추가/편집 양식에 연결)을 작성했습니다. $ form_state 변수가 내 유효성 검사기 함수에 전달되지 않는 것과 여전히 고심하고 있습니다.이 변수가 어떻게 전달되는지 보여주는 예제는 없습니다. – PrairieHippo

0

정확하게 동일한 문제가 발생하여 잘못된 방식으로 처리했습니다. 나는 그 자신을 추가했다.

http://drupal.org/node/313389

+0

@Daren : 'postsave'nodeapi 조치가 'hook_nodeapi'의 '삽입'및 '업데이트'작업과 어떻게 다른가요? 두 가지 모두 * 노드가 지속 된 후에 발생합니다. 삽입 조작으로 노드 ID가 이미 있습니다. –

+0

이것은 적어도 1 년 전에 내가 이것을 썼을 때였고, 내가했던 일에 대한 node_id를 얻기 위해 삽입 결과를 얻지 못했습니다. 첨부 파일과 관련이 있다는 것을 알고 있습니다. 미안해서 더 도움이되지 못했습니다. –

2

정확히 무엇을하고 싶은가에 따라 '삽입'작업에서 hook_nodeapi을 사용할 수 있습니다. 노드 생성이 성공한 후에 시작되므로 노드 객체는 새로 할당 된 nid를 이미 포함합니다.

참고 :

는 "삽입": API 문서의 문구는 '삽입'과 '갱신'운영에 관한 약간 모호 이 을 작성되는 노드 (데이터베이스에 삽입). 그것은 바로 공정의 중간에있는 것처럼 노드 이미이 시점에서 만들어진 반면

이것은 들린다.

1

node_save 함수가 도움이된다고 생각합니다.

관련 문제