Как обновить значение одного поля, вызвав соответствующую проверку - PullRequest
6 голосов
/ 18 февраля 2011

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

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

global $user;
$account = user_load($user->uid);
$edit = (array) $account;
$edit['field_lastname']['und'][0]['value'] = 'test';
user_save($account, $edit);

Однако это обходит любую проверку полей, определенную в другом месте в Drupal. Я не хочу воспроизводить какие-либо проверки, написанные где-то еще - это не путь Drupal!

Мой вопрос: есть ли в Drupal 7 функция, которую можно вызывать для обновления значения одного поля. Я полагаю, что такая функция очистит соответствующие кэши, вызовет проверку полей и т. Д.

Я знаю, что решение будет полностью отличаться от моего текущего объекта на основе объекта. Я просто не могу на всю жизнь найти соответствующую функцию в API. Мне интересно, является ли проблема тем, что я ищу только функцию сохранения, и что есть некоторые другие необходимые шаги, которые предшествуют.

Любая помощь с благодарностью.

1 Ответ

1 голос
/ 18 февраля 2011

Проверьте функцию drupal_form_submit .Это позволяет вам отправлять формы из кода.В этом случае вы можете использовать его для пользовательской формы редактирования, которая затем запускает соответствующую проверку.

...