Когда вычисляемое поле вычисляется?
Я не понимаю, когда вычисляется вычисляемое поле. Вычисляется ли он, когда поля, на которых он рисует, обновляются или когда кто-то просматривает узел, в котором он используется?
2 answers
Вычисляемое поле - это очень мощный модуль полей CCK, который позволяет добавлять пользовательские "вычисляемые поля" в типы контента. Эти вычисляемые поля заполняются значениями, которые вы определяете с помощью PHP-кода. Вы можете использовать все, что доступно для Drupal, включая другие поля, текущего пользователя, таблицы базы данных, вы называете это. (Уже чувствуешь силу? :)) Вы также можете выбрать, следует ли хранить вычисленные значения полей в базе данных с другие поля содержимого или "вычисляйте" их на лету во время просмотра узлов. (Хотя следует отметить, что для использования представлений требуются сохраненные в базе данных значения.) Это поле буквально является швейцарским армейским ножом CCK fields. Так что начинайте готовить свои ценности на основе PHP!
На странице документации (http://drupal.org/node/126522 ) там также говорится:
Когда на самом деле вычисляется поле?
Если вы хотите сохранить значения в базе данных, вам необходимо обновить или повторно отправьте узел, чтобы вычислить значение поля.
Если оно не хранится в базе данных, то значение вычисляется при загрузке узла и только при загрузке узла. Поле не будет работать в представлениях и не будет функционировать должным образом, если оно зависит от других не сохраненных вычисляемых полей.
Дополнительная информация от drupal.org и то, что кажется хорошей страницей фрагментов, - это http://drupal.org/node/149228
В наши дни (более чем через 3 года после того, как был задан этот вопрос), для модуля Вычисляемого поля доступна малоизвестная/используемая альтернатива, т. Е. (довольно новый) модуль Математического поля (для D7). Некоторые дополнительные сведения об этом модуле (со страницы его проекта), в котором также подробно описывается, когда на самом деле происходят вычисления:
Модуль Математического поля определяет новый тип поля для динамического вычисления значений в формах сущностей. Это альтернатива Вычисляемое поле это не требует использования PHP-фильтра.
Поля математических выражений динамически обновляются с помощью ajax в форме сущности, как только заполнены все необходимые поля. Если JavaScript отключен, поле будет оценено при отправке формы. Результат сохраняется в базе данных при отправке формы.
Для получения более подробной информации (пошаговые инструкции) обратитесь к любой из этих ссылок:
- (удивительно!) Документация сообщества о модуле математического поля.
- интересная статья о , представляющая модуль математического поля , который также включает в себя некоторые скриншоты, чтобы увидеть его в работе (например, пример формы добавления/редактирования).
Известные проблемы
Поскольку это довольно новый модуль D7, с ним все еще есть несколько (известных) проблем, как упоминалось также на странице проекта:
- Библиотека математических выражений CTools вызывает ошибку, когда использование функций, которые принимают более одного параметра. Это влияет на pow(), min(), max() (#1958538: Улучшить механизм математических выражений).
- Математическое поле еще не поддерживает многозначные поля параметров (флажки или многозначный выбор) (#2483453: Добавление агрегатных функций для многозначных полей).
- Математическое поле еще не поддерживает коллекции полей (#2573643: Поддержка модуля сбора полей).
Бонус: вам не понадобится "PHP фильтр" (только ИМО, что должно быть веской причиной для изучения этой альтернативы)...