AJAX 상태 메시지


11

표준 AJAX 프레임 워크를 통해 drupal 7에서 AJAX 호출을하고 있습니다. 내 문제는 AJAX 콜백에 의해 상태 메시지가 설정되면 단순히 손실되거나 페이지를 다시로드 할 때 표시됩니다. 페이지를 다시로드하지 않고 AJAX 콜백 실행이 완료된 직후 상태 메시지를 표시하려면 어떻게해야합니까? 이를위한 모듈이 있습니까?

답변:


13

상태 메시지를 렌더링하여 anohter AJAX 명령으로 보낼 수 있습니다.

예를 들면 다음과 같습니다.

$commands = array();

// Add other commands

$commands[] = ajax_command_prepend('div#ajax-status-messages-wrapper', theme('status_messages'));

return array('#type' => 'ajax', '#commands' => $commands);

적어도 이것이 내가 직면했을 때이 문제를 해결하는 방법입니다.


당신은 구세주입니다 !!! : D 정말 감사합니다.
SGhosh

거기에서 테마 ( 'status_messages')의 사용은 무엇입니까?
alyssaeliyah

@Bebang Bakikang은 상태 메시지를 렌더링하고 현재 상태 메시지와 함께 HTML 코드를 반환합니다.
sanzante

8

Drupal 8의 경우

$response = new AjaxResponse();    
$status_messages = array('#type' => 'status_messages');
$messages = \Drupal::service('renderer')->renderRoot($status_messages);
if (!empty($messages)) {
  $response->addCommand(new PrependCommand('.your_selector', $messages));
}

return $response;

3

AJAX가 포함 된 Drupal 8 양식의 경우 Tim Bozeman의 답변이 효과가 있었지만 메시지는 스타일링없이 표시되었습니다. 이것이 나를 위해 일한 것입니다.

$response = new AjaxResponse();
drupal_set_message($action);
$form['messages']['status'] = [
  '#type' => 'status_messages',
];
$response->addCommand(new InsertCommand(null, $form['messages']));

return $response;

0

나를 위해

$commands[] = ajax_command_remove('div.messages');
$commands[] = ajax_command_after('#main-content', theme('status_messages'));

일했다. 여기서 # main-content는 표준이며 테마의 acutal messages 위치에 맞게 사용자 정의해야 할 수도 있습니다. (아마도 두 번째 방법을 ajax_command_append () 또는 다른 것으로 변경해야 할 수도 있음 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.