Отличие echo и retunt в функциях hook_menu?

Главные вкладки

Аватар пользователя Gnom7 Gnom7 6 марта 2016 в 5:10

Здравствуйте! Учусь писать модули.

<?php
function xray_menu() {
 
  
$items['simple_page'] = array(
    
'title' => 'Simple page',
    
'page callback' => 'xray_simple_page_content',
    
'access callback' => TRUE,
    
'menu_name' => 'main-menu',
    
'file' => 'xray.pages.inc',
    
'options' => array('attributes' => array('class' => array('test-class'))),
  );
 
  return 
$items;
}
?>

<?php
function xray_simple_page_content() {
  
$nodes db_query("SELECT * FROM {suroveckij_faq} ");
  
$nodes $nodes->fetchAll();
  
  
   foreach(
$nodes as $k) {
    echo 
$k->question;
    echo 
'<p />';
    echo 
$k->answer;
    echo 
'<hr />';
  }
  return 
'Конец';
}
?>

Почему содержимое echo выводится в самом начале страннице (отдельно от дизайна) а содержимое return где положено? и как выводить с помощью hook_menu php-циклы на созданную им страницу.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 6 марта 2016 в 8:25

Потому что echo - Вывод на экран, а return - возврат в вызывающую функцию.
Что такое php-циклы и зачем их выводить на страницу ? Если Вас инетересует как вывести что либо перебором в цикле на страницу, то надо различать build и Theme в drupal, принято в в функуиях которые вызываются из _menu return build, а он автомтически выводится через theme сам. Рекомендую почитать https://api.drupal.org/api/drupal , а для быстрого въезда на примерах https://www.drupal.org/project/examples