2017-03-31 7 views
1

우리는 성공적인 제출시 URL로 리다이렉트하는 드루팔 (Drupal 7) 웹 폼을 가지고 있습니다.드루팔 (Drupal 7 Webform redirect

사용자가 동일한 웹 폼을 다시 방문하고 이미 제출 한 경우 사용자를 리디렉션해야합니다.

프로그래밍을 위해 모듈이 필요한가요?

미리 감사드립니다.

답변

0

그래서 여기에 우리가 함께 한 해결책이 있습니다.

  1. 나는 웹 양식을 저장하고 나는 웹 양식을 유지하기 위해 페이지를 만들었 블록
  2. 등이 제공
  3. 내가 넣어 페이지 내용에서 페이지 내용
  4. 위에 표시하는 블록을 구성 일부 자바 스크립트에서 양식 요소가 있는지 검색 - 정확한 URL로 전달하지 않는 경우

따라서 웹 양식은 제출시 올바르게 리디렉션되고 (웹 양식 설정에서 설정 됨) 사용자가 착륙하면 리디렉션됩니다 그 페이지에서 다시 웹 양식을 완성했습니다.

1

웹 폼 모듈을 살펴본 결과 사용자가 이미 양식을 제출 한 경우 사용자를 리디렉션하는 설정이 없으므로 프로그래밍 방식으로 처리해야한다고 생각합니다.

참고 : 규칙 모듈을 사용하면 맞춤 모듈 없이도 가능할 수 있습니다. 나는 이것을 시도하지 않았다.

프로그래밍 방식으로하려면 다음과 같이 할 수 있습니다. hook_node_view()을 구현하고 webform API 함수 webform_get_submission_count()을 사용하여 사용자가 이미 항목을 제출했는지 확인합니다. (편집 :이 예에서 사용자 정의 모듈은 example_webform라고 함) 그것이 양식이 제출 될 때 사용되는 페이지를 다시 사용 지금처럼

<?php 

/** 
* Implements hook_node_view(). 
*/ 
function example_webform_node_view($node, $view_mode, $langcode) { 
    global $user; 
    module_load_include('inc', 'webform', 'includes/webform.submissions'); 
    $submission_count = webform_get_submission_count($node->nid, $user->uid); 
    if (!empty($submission_count) && $submission_count > 0) { 
    $redirect = $node->webform['redirect_url']; 
    drupal_goto($redirect); 
    } 
} 

, 그래서 당신이해야 할 선택하는 경우이 만들어 기억 성공 페이지는 이것을 반영합니다. 예를 들어 성공 페이지가 두 번째로 사용자가 올 경우 '귀하의 글이 저장되었습니다'라고 말하는 것이 이상 할 것입니다. 또는 $redirect을 웹 폼 설정의 페이지가 아닌 다른 페이지로 바꿀 수 있습니다.

또한 웹 양식에는 "이 양식을 이미 제출했습니다. 이전 제출물을 봅니다."라는 메시지가 계속 추가됩니다. 이것이 가능하면.

+0

고맙습니다. 모듈 솔루션을 찾지 못하면 이번 주에 테스트 할 것입니다. – user1689274