Правила + Поле кнопки: получение объекта сущности для настраиваемого действия
Я использую Правила 7.x-2.2 с последней версией поля кнопки (http://drupal.org/project/button_field ), API сеанса (http://drupal.org/project/session_api ) и пользовательский модуль для хранения некоторых значений сущностей в сеансе пользователя, когда он нажимает кнопку.
Чтобы уточнить, у меня есть тип сущности (коммерческий продукт) с HTML-экземпляром поля кнопки, который должен запускать действие, определяемое пользовательскими правилами, где я хочу извлечь некоторые значения из объекта сущности, с которым связана кнопка.
Вот как в настоящее время выглядит информация о действиях моих правил в моем пользовательском модуле:
function commerce_custom_box_rules_action_info() {
return array(
'commerce_custom_box_add_to_box' => array(
'group' => t('Commerce Custom Box'),
'label' => t("Add the product to the user's box"),
'parameter' => array(
'entity' => array(
'label' => t('Product entity'),
'description' => t('The entity the clicked button is attached to.'),
'type' => 'entity',
),
),
),
);
}
И вот как выглядит мое правило:
Проблема в том, что в commerce_custom_box_add_to_box()
(функция, запущенная моим пользовательским действием) я попытался использовать dpm()
для всех ее аргументов, и ни один из них не содержит никаких свойств сущности, значений полей или чего-либо еще, что могло бы быть даже отдаленно полезным. Все, что я получаю, это пустой "entitydrupalwrapper" предметы и тому подобное. Однако, если я заменю действие в правиле на "Выполнить PHP-код", там будет доступен объект $entity, и dpm() покажет, что он на самом деле заполнен всеми обычными свойствами.
Естественно, я пытаюсь понять, почему этот объект существует, но не принимается моим пользовательским действием. Может быть, я думаю об этом неправильно?
Свежая пара взглядов на это была бы чрезвычайно признательна! Рад предоставить дополнительную информацию, если это необходимо.
1 answers
Оказывается, это было вызвано типом параметра, который я использовал. Я установил для него значение "сущность", тогда как это должно быть имя машины типа сущности. Изменение его на "commerce_product" устранило проблему.