it-swarm-ko.tech

모듈에서 테마로 배열 또는 개체를 전달하는 방법

다음과 같이 페이지 콜백과 함께 hook_menu ()를 사용했습니다.

function profilecb_menu() {
  $items['profilecb'] = array(
    'title' => 'Profile CB',
    'page callback' => 'pcb_exe',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

콜백 코드는 다음과 같습니다.

function pcb_exe($id) {
  $ar = array('arg1'=> 'value1', 'arg2'=> $id);

  return $ar;
}

콜백 함수가 단일 문자열을 반환하도록 만들 수있었습니다. 배열을 반환하려고하면 오류가 발생합니다.

내가해야 할 일은 콜백 함수가 데이터베이스에 연결하는 것과 같은 몇 가지 작업을 수행하도록 만들고 유용한 정보의 복잡한 배열을 템플릿으로 반환하는 것입니다.

어떻게 할 수 있습니까?

3
Carlos Muñiz

Drupal 6에서 메뉴 콜백은 다른 모듈의 출력을 함께 출력하기 위해 HTML이 포함 된 문자열을 반환해야합니다. 또는 출력을 인쇄하고 exit()을 호출 할 수 있습니다. .

테마 함수에 배열을 전달해야하는 경우 메뉴 콜백에서 반환 된 출력은 메뉴 콜백이 배열을 전달하는 테마 함수에서 출력되어야합니다.

function pcb_exe($id) {
  $ar = array('arg1'=> 'value1', 'arg2'=> $id);
  return theme('pcb_exe_output', $ar);
}

Drupal 7 (및 상위 버전)에서 메뉴 콜백의 출력은 일반적으로 drupal_render () 에서 사용하는 형식의 배열입니다.
테마 함수에 배열을 전달할 수 있지만 테마 함수에 전달 된 매개 변수가 변경되었습니다.

function pcb_exe($id) {
  $ar = array('arg1'=> 'value1', 'arg2'=> $id);
  return theme('pcb_exe_output', $ar);
}

이 경우 테마 함수에 전달 된 매개 변수가 이미 배열이므로 눈에 띄는 차이가 없습니다. Drupal 7 이후 테마 함수에 전달 된 매개 변수는 테마 함수에서 필요한 모든 값을 포함하는 배열입니다. 예를 들어 theme_vertical_tabs () 코드를 참조하십시오.)

function theme_vertical_tabs($variables) {
  $element = $variables['element'];
  // Add required JavaScript and Stylesheet.
  drupal_add_library('system', 'drupal.vertical-tabs');

  $output = '<h2 class="element-invisible">' . t('Vertical Tabs') . '</h2>';
  $output .= '<div class="vertical-tabs-panes">' . $element['#children'] . '</div>';
  return $output;
}
1
kiamlaluno