하나의 ajax 호출에서 두 개의 콜백 함수를 호출 할 수 있습니까?

하나의 양식 제출에서 두 개의 ajax 콜백을 달성 할 수있는 방법을 알고 싶습니다. 가능합니까? 그리고 어떻게합니까?

답변

아니요, 불가능합니다. 왜 그럴까요? Ajax 콜백은 AJAX 래퍼를 대체하기 위해 HTML 조각을 반환 할 수 있습니다. 2 개를 부르면 Drupal이 사용하는 것은 무엇입니까? 어떻게 결정해야합니까? 이것이 바로 #ajax["callback"] 가 이름 배열이 아닌 함수 이름으로 정의되는 이유입니다. 그런 문제를 피할 수 있습니다.

AJAX 이벤트에 대한 응답으로 두 개의 함수를 호출해야하는 경우 첫 번째 단락에서 요청한 로직을 포함하는 콜백을 작성하고 해당 콜백에서 필요한 함수를 호출합니다. .

답변

직접 할 수는 없습니다. 대신 다른 두 함수를 호출하는 함수를 사용하세요.

"#ajax" => array( "callback" => "my_callbacks_wrapper", ) ... 

그런 다음 :

my_callbacks_wrapper($form, $form_state) { $first_callback_processed_form = first_callback($form, $form_state); $second_callback_processed_form = second_callback($first_callback_processed_form, $form_state); return $second_callback_processed_form; } 

콜백이 방해하지 않는지 확인하세요.

댓글

  • 찬성 투표를합니다. 또한 Ajax 콜백이 배열 : return array (' #type ' = > ' ajax ', ' #commands ' = > $ commands); 첫 번째 콜백을 호출하는 것이 ' 더 간단 할 수 있습니다. 그런 다음 호출하는 대신 #commands 배열에 값을 추가합니다. 두 번째 콜백입니다. 중복 기능 일 수도 있지만 전체 콜백이 ' 필요하지 않을 수도 있습니다.
  • 예, 맞습니다. exmaple은 매우 간단하지만 ' 다시 병합하는 것이 좋습니다. 두 기능의 결과. 그러나 두 가지 기능을 사용하는 것은 해킹이라는 것을 명심하십시오.
  • @tunic-> 두 개의 래퍼 요소를 가질 수 있습니까?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다