Когда вычисляемое поле вычисляется?


Я не понимаю, когда вычисляется вычисляемое поле. Вычисляется ли он, когда поля, на которых он рисует, обновляются или когда кто-то просматривает узел, в котором он используется?

 2
Author: Pierre.Vriens, 2012-07-11

2 answers

Из Модуля Вычисляемого поля :

Вычисляемое поле - это очень мощный модуль полей CCK, который позволяет добавлять пользовательские "вычисляемые поля" в типы контента. Эти вычисляемые поля заполняются значениями, которые вы определяете с помощью PHP-кода. Вы можете использовать все, что доступно для Drupal, включая другие поля, текущего пользователя, таблицы базы данных, вы называете это. (Уже чувствуешь силу? :)) Вы также можете выбрать, следует ли хранить вычисленные значения полей в базе данных с другие поля содержимого или "вычисляйте" их на лету во время просмотра узлов. (Хотя следует отметить, что для использования представлений требуются сохраненные в базе данных значения.) Это поле буквально является швейцарским армейским ножом CCK fields. Так что начинайте готовить свои ценности на основе PHP!

На странице документации (http://drupal.org/node/126522 ) там также говорится:

Когда на самом деле вычисляется поле?

Если вы хотите сохранить значения в базе данных, вам необходимо обновить или повторно отправьте узел, чтобы вычислить значение поля.

Если оно не хранится в базе данных, то значение вычисляется при загрузке узла и только при загрузке узла. Поле не будет работать в представлениях и не будет функционировать должным образом, если оно зависит от других не сохраненных вычисляемых полей.

Дополнительная информация от drupal.org и то, что кажется хорошей страницей фрагментов, - это http://drupal.org/node/149228

 2
Author: Jimajamma, 2012-07-11 21:22:11

В наши дни (более чем через 3 года после того, как был задан этот вопрос), для модуля Вычисляемого поля доступна малоизвестная/используемая альтернатива, т. Е. (довольно новый) модуль Математического поля (для D7). Некоторые дополнительные сведения об этом модуле (со страницы его проекта), в котором также подробно описывается, когда на самом деле происходят вычисления:

Модуль Математического поля определяет новый тип поля для динамического вычисления значений в формах сущностей. Это альтернатива Вычисляемое поле это не требует использования PHP-фильтра.

Поля математических выражений динамически обновляются с помощью ajax в форме сущности, как только заполнены все необходимые поля. Если JavaScript отключен, поле будет оценено при отправке формы. Результат сохраняется в базе данных при отправке формы.

Для получения более подробной информации (пошаговые инструкции) обратитесь к любой из этих ссылок:

Известные проблемы

Поскольку это довольно новый модуль D7, с ним все еще есть несколько (известных) проблем, как упоминалось также на странице проекта:

Бонус: вам не понадобится "PHP фильтр" (только ИМО, что должно быть веской причиной для изучения этой альтернативы)...

 2
Author: Pierre.Vriens, 2016-02-08 11:34:05