Drupal - Понимание того, как печатать переменные - PullRequest
1 голос
/ 11 марта 2011

Таким образом, при создании сайта Drupal (например) это очень распространенный помощник по разработке для печати переменных формы и т. Д. В верхней части страницы, например, используя dpm() (при условии, что модуль devel установлен).

У меня проблемы с поиском всех способов сделать это и контекстов, в которых они могут быть использованы.

Например, я могу использовать dpm($form) в реализации hook_form_alter в моем пользовательском модуле. Нет проблем, переменные красиво напечатаны вверху страницы.

Теперь, если я посмотрю на шаблон, скажем, node.tpl.php, я увижу, что есть множество доступных переменных, используемых для построения страницы. Так что, если я выберу один, например, $ links, я бы подумал, что добавление <?php dpm($links); ?> в node.tpl.php выведет переменные для меня. Но нет!

Почему, что я делаю не так? :)

Ответы [ 5 ]

3 голосов
/ 11 марта 2011

dpm() использует drupal_set_message(). В какой-то момент в процессе рендеринга страницы Drupal печатает все сообщения, которые были установлены с помощью этой функции.
Вы используете dpm() после этой точки, поэтому уже слишком поздно добавлять сообщения на эту страницу. Однако вы должны увидеть их на следующей странице или после обновления текущей. Не полезно для отладки, хотя.

Вы можете попробовать Модуль разработки тем .

2 голосов
/ 08 апреля 2016

Самый простой способ:

<code>echo "<pre>";
var_dump($row);    
echo "
"; die ();
2 голосов
/ 11 марта 2011

Если вы добавляете новую переменную в существующий шаблон, чтобы увидеть изменения, вы должны сначала очистить кеш Drupal.
Посмотрите здесь, чтобы узнать, как очистить кеш Drupal

0 голосов
/ 14 июня 2016

Показать все переменные узла:

<ol>
    {% for key, value in node  %}
        <li>{{ key }}</li>
    {% endfor %}
</ol>
0 голосов
/ 11 марта 2011

dpm () помещает отладочный контент в сессию, не будет отображаться, если этот контент слишком большой.

Попробуйте die(kpr($vars));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...