Когда я перехожу в Drupal 7, я внезапно очень растерялся из-за того, что, как мне показалось, я понял (или мне не нужно было понимать из-за значительного количества времени, которое я провел в Drupals 5 и 6 -
Я буду работать над модулем и в процессе разработки кода добавлю несколько вызовов dsm () и / или drupal_set_message (). В моей предыдущей работе эти вызовы всегда работали так, как я ожидал - при отправке на следующей странице dsm запускались, производили все, что производили, и результаты оказывались на странице. В Drupal 7 я делаю то же самое, но обнаруживаю, что они появляются на одной странице слишком поздно - мне нужно обновить страницу, чтобы увидеть их. Это заставляет меня думать, что оценочная модель Drupal 7 состоит в том, что выбранный шаблон страницы оценивается, а затем - и только тогда - загружается и отображается узел, отображаемый на странице. Конечно, несколько тестов с использованием watchdog () и sleep () подтверждают это - шаблон страницы определенно начинает обрабатываться до того, как обрабатывается узел внутри страницы. (Это только с очень-чуть-чуть измененными версиями стандартного шаблона страницы D7 и без каких-либо хитрых настроек внутреннего поведения D7, кстати, и я ничего не делаю с кэшированием - все параметры кэширования в Config> Development> Производительность отключена.)
Это объясняет поведение сообщения - шаблон страницы выводит все доступные ему сообщения в начале процесса рендеринга страницы, а затем работает на узле. Если какие-либо сообщения генерируются во время визуализации узла, они попадают в стек сообщений, но они не будут отображаться в этой версии страницы, поскольку стек сообщений уже был обработан (и очищен) шаблоном страницы. Но это кажется неправильным - я хочу, чтобы эти сообщения появлялись как часть немедленного рендеринга страницы. Я также уверен, что D6 не ведет себя так - сообщения dsm () будут появляться сразу. Это не просто вопрос отладки; это также портит некоторый код проверки формы, где ошибка проверки не появляется на странице, созданной отправкой формы, именно по этой причине.
Или я так думаю, в любом случае. Я сумасшедший, или заблуждаюсь, или что-то еще? Было ли изменение в D7, которое привело к этому, казалось бы, новому поведению, или я просто запутался? Большое спасибо за любые разъяснения, которые могут быть там ...