Правила + Поле кнопки: получение объекта сущности для настраиваемого действия


Я использую Правила 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',
                ),
            ),
        ),
    );
}

И вот как выглядит мое правило:

Rule utilising custom action

Проблема в том, что в commerce_custom_box_add_to_box() (функция, запущенная моим пользовательским действием) я попытался использовать dpm() для всех ее аргументов, и ни один из них не содержит никаких свойств сущности, значений полей или чего-либо еще, что могло бы быть даже отдаленно полезным. Все, что я получаю, это пустой "entitydrupalwrapper" предметы и тому подобное. Однако, если я заменю действие в правиле на "Выполнить PHP-код", там будет доступен объект $entity, и dpm() покажет, что он на самом деле заполнен всеми обычными свойствами.

Естественно, я пытаюсь понять, почему этот объект существует, но не принимается моим пользовательским действием. Может быть, я думаю об этом неправильно?

Свежая пара взглядов на это была бы чрезвычайно признательна! Рад предоставить дополнительную информацию, если это необходимо.

Author: joshmiller, 2012-12-04

1 answers

Оказывается, это было вызвано типом параметра, который я использовал. Я установил для него значение "сущность", тогда как это должно быть имя машины типа сущности. Изменение его на "commerce_product" устранило проблему.

 1
Author: Riari, 2012-12-05 10:35:45