Отладка кода в Drupal

Для отладки кода в drupal есть несколько вариантов:

1. Модуль Devel.

Это функции для вывода информации  о  переменных:

dpm($input, $name = NULL). Использует drupal_set_message.

dvm($input, $name = NULL)

dpr($input, $return = FALSE, $name = NULL)

dvr($input, $return = FALSE, $name = NULL)

kpr($input, $return = FALSE, $name = NULL)

dargs()

dd($data, $label = NULL)

ddebug_backtrace()

Для показывать списка sql запросов, выполненных при генерации страницы. В списке выводится сам запрос, время выполнения, функция, в которой был вызван запрос, информация об аргументах и возможность просмотреть EXPLAIN запроса (скриншот). Есть опция подсветки медленных запросов и возможность отсортировать список по времени выполнения.

db_queryd($query, $args = array())

Подробнее по функциям здесь.

Модуль умеет еще много чего, здесь перечислять пока не буду.

 

2. В drupal 7 и 8 есть уже встроенная функция debug, используемая для вывода отладочной информации. Её можно использовать, как в файлах модуля и так и темы.

Например, вставим в шаблон node.tpl.php такую строку:

<?php debug($content['links']['comment']); ?>

В Drupal 6 стандартно: print_r(). Можно добавить <pre> </pre> для удобства.

3.  Те, кто не  любит использовать модуль devel из-за его тяжести, можно использовать простенькую функцию, постив ее в  файл settings.php(не моё, утащила):

 

/**

 * @param

 *      $msg - то что хотим показать, переменная , массив, объект 

 *      $title - опционально, метка 

 *      $pre   - обрамлять тэшгами 
 - полезно для показа массивов и объектов

 *      $out   - если TRUE, выводить через drupal_set_message, иначе вернуть информацию

 */

 

function dbg($msg, $title = '', $pre = TRUE, $out = TRUE) {

global $user;

// выводим только для админа, в принципе можете изменить uid на другой, 

// что бы выводилось под вашим экаунтом;

 if ($user->uid == 1) {

   if ($out) {

     $info = print_r($msg,1);

     if ($pre) {

       $info = '<pre>' . $info . '</pre>';

     }

     if (!empty($title)){

       $info = '' . $title . '
' . $info; } } if ($out) { drupal_set_message($info); } else { return $info; } } }

 
 
теперь, чтобы посмотреть какую-либо информацию, достаточно в коде вставить нашу функцию:
 

dbg($value);

 

Рекомендовать в Социальных сетях:
 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *