2009-08-20 2 views
1

현재, 다음과 같은 코드가 실행되는 경우 :"drupal_set_message"메시지가 즉시 나타나도록 강요 하시겠습니까?

drupal_set_message("TEST"); 

를 한 번만 페이지가 새로 고쳐 있으며, 메시지가 페이지에 표시됩니다.

현재이 메서드는 ajax 호출이 실행되는 상황입니다. 따라서 현재 페이지가 변경되지 않습니다. 따라서,이 메서드를 호출 한 후 오류 메시지를 즉시 표시해야합니다 내 아약스 호출에 포함 할 수있는 방법이 필요합니다.

아니요, 저는 "error"div를 원하는 값으로 설정하여 수동으로하고 싶지 않습니다. 나는 메시지 효과를 사용하고 있으므로 드루팔 (Drupal)과 같은 방법으로 연결해야 메시지가 드루팔 (Drupal)처럼 표시됩니다.

누구나?

+0

귀하의 퀘스트 결과가 마음에 들지 않더라도 답변을 업데이트했습니다. – googletorp

답변

1

나는 이것이 조금 더 정확하게 말한 this question의 중복이라고 생각한다. 거기에서 내 대답은 여전히이 답변에 적용됩니다.

기본적으로 drupal_set_message를 사용하기 위해 모든 AJAX 후프를 통과 할 이유가 없으며 속도가 느려집니다. drupal_set_message를 사용하면 drupal_set_message에서 생성 되었기 때문에 삽입 한 HTML에 반응하는 messagefx 모듈을 얻지 못합니다. ajax 호출없이 javascript에서 html을 직접 생성하고 입력하는 것이 훨씬 빠르고 간단하며 관련 js 함수를 호출하여 fx를 추가 할 수 있습니다.

편집 :

  1. 드루팔은 다음과 같습니다

    당신이 요구하는 것은 당신이 드루팔은 두 가지 이유로 즉시 효과 drupal_set_message (의 메시지)를 보여 얻을 수 없다, 불가능하다 PHP를 사용하여 페이지를 새로 고치거나 새로운 페이지를로드하는 유일한 방법은 PHP를 사용하여 페이지에 새로운 내용을 가져 오는 것입니다.

  2. Messagefx는 페이지가로드 될 때 생성 된 메시지를 대상으로하는 간단한 js를 실행함으로써 drupal을 통해 페이지를 업데이트하고 새 메시지를 인쇄 할 수 있다고해도 messagefx에서 영향을받지 않습니다 .

내가 설명했듯이 목표를 달성 할 수 있지만 여기에 작성한 내용에 맞게 최적화 할 수 있습니다. 그러나 jQuery의 append(), prepend() 함수와 같은 작업을 수행하지 않으면 새 메시지를 화면에 표시 할 수 없습니다.그래서 나는 당신이 묘사 한 것과 비슷하거나 그렇게하지 않기로 결정해야한다고 생각합니다.

당신이 고려해야 할 한가지는 js 또는 drupal을 통해 HTML을 입력/입력하는 것이 최종 결과와 관련하여 정말로 중요하지 않다는 것입니다 : html로 작성된 페이지.

+0

내가 이것을하고 싶은 이유는 다음과 같습니다. 사용자가 모듈의 설정을 변경하면 내 코드에 반영되지 않습니다. 모든 플러그인을 중앙 집중식으로 만들고 플러그인의 변경 사항이 페이지 자체에 반영되도록하십시오. 내가 단순한 자바 스크립트 였다면, 그렇습니다. 아약스 없이는 더 빠를 것입니다.하지만 불행히도, 그렇지 않습니다. – coderama

+0

p.s. 중복에 대해 유감스럽게 생각하지만 질문에 대한 답변이 거의 없으면 사람들은 해결했다고 생각합니다. 그래서 제 질문을 좀 더 정확하게 작성하면 응답을받을 수 있다고 생각했습니다. – coderama

+0

@RD. 제 경험에 따르면 더 정확한 독자 질문을하는 것이 더 정확하지만 새로운 질문을 반복하는 것은 그 중 하나가 닫히는 경향이있는 반면 더 정확한 독자 질문을하는 것은 질문을 편집하는 것입니다. – Shawn

1
drupal_get_messages($type = NULL, $clear_queue = TRUE) 

오류 div를 설정하거나 어떤 식 으로든 직접 표시해야한다고 잘못 이해하지 않는 한.

의견 후 편집 :

OH! 일반적으로 메시지는 page.tpl.php에서 페이지로드에 표시되므로 div에 직접 메시지를 표시해야합니다.

적절한 매개 변수를 전달하는 각각에 대해 theme()을 호출하여 모든 Drupal 후크를 트리거 할 수 있어야하며 페이지에 배치하는 올바른 HTML을 반환합니다. 테마를 호출하면 page.tpl.php에서 추가로 변경하지 않더라도 테마에서 인쇄 된 것처럼 페이지에 일반적으로 나타나는 것처럼 서식이 지정됩니다.

+0

오해하셨습니까? 페이지 a에서 페이지 b를 통해 drupals_set_messages를 호출하는 아약스 호출이 있습니다. 페이지 b가 호출 된 후에는 변경되지 않습니다. 페이지에서 a 페이지의 세션에서 메시지를 표시하려면 JAVASCRIPT 호출이 필요합니다. 말이 돼? – coderama

+0

O ... 나는 당신이 그 (것)들을 얻는 것을 저에게 말하는 다만 본다. 나는 그것을 안다. 나는 그들을 얻을 수있다. 화면에 표시하기 위해 내부 드래그 기능 호출로 표시하고 싶습니다. 오류 메시지를 화면에 표시하려면 drupal이하는 것이 있어야합니다. 내 질문은 뭐야? – coderama

+0

내 게시물을 편집하여 의견을 말했습니다. – McAden

1

나는보기가 미리보기를 보거나 구성 요소를 편집 할 때보기에 메시지가 표시되는 방식이라고 생각합니다. 이렇게하면 Views 핸들러의 코드에 dsm() 문을 넣고 디버깅과 관련된 출력을 볼 수 있습니다.

뷰는 이런 식으로 작업을 수행합니다 당신이 당신의 아약스 콜백 코드의 특수성에 따라 달라 인쇄

if ($messages = theme('status_messages')) { 
    $display = '<div class="views-messages">' . $messages . '</div>'; 
} 

.

관련 문제