Вы здесь

Когда происходит вызов hook_field_presave

2

Добрый день.

Скажите пожалуйста, вызов hook_field_presave когда должен происходить ?

Перед сохранением сущности (node, user и т.д.), которая содержит CCK-поля ?
Или когда ?

Я пытаюсь в своем модуле вызывать этот хук, который бы производил над значением поля некие действия, а он не вызывается. Даже в случае, если значение поля было явно изменено.

Версия Drupal: 
7.x
Категория: 
Field API
Вопрос задан 26.06.2015 - 08:27

Ответы

3

Коммент на странице хука:

Also note that this hook is only called on the module that defines the field. So you can't use it to hook into presave functionality of other modules' fields.
AFAICT, the best hook to use for that is hook_field_attach_presave(), though it a bit tough since the only parameters are $entity_type and $entity.

Т.е. хук вызывается только для модуля, в котором определено данное поле.

Ответ дан 26.06.2015 - 09:10

Скажите, а как, к примеру, правильнее всего решить такую задачу ?

Допустим, есть текстовое поле, которое может цеплять к разным сущностям (ноды, пользователи, комментарии и т.д.).
И перед сохранением этой сущности в этом поле следует заменить букву "а" на букву "б".
Через hook_entity_presave ?

Дело в том, что я хочу написать виджет для быстрого задания нескольких дат.
И в этом виджете даты будут храниться в поле типа hidden, разделенные чем-либо, а уже на этапе сохранения сущности значение поля типа hidden будет разбираться и эти даты уже будут записываться в нормальном формате (в массив дат, у каждой даты - своя дельта и т.д.) .

Комментарий оставлен 26.06.2015 - 10:44

Через entity_presave можно, нужно только проверять, есть ли instance поля в данной entity.

Комментарий оставлен 26.06.2015 - 11:38

Наверное, проверять не только instance поля, но также и использование данного виджета для поля.

Комментарий оставлен 26.06.2015 - 11:50

Я слово "виджет" просмотрел :) ну да, надо и это проверять, через field_info_instance например.

Только, если дело в виджете, то может #value_callback просто использовать?

Комментарий оставлен 26.06.2015 - 12:13