web-dev-qa-db-ja.com

ルール+ボタンフィールド:エンティティオブジェクトをカスタムアクションに取得

最新バージョンのボタンフィールド( http://drupal.org/project/button_field )、セッションAPI( http:// drupal。 org/project/session_api )およびユーザーがボタンをクリックしたときにユーザーのセッションにエンティティ値を格納するカスタムモジュール。

明確にするために、カスタム定義されたルールアクションをトリガーすることになっているボタンフィールドのHTMLインスタンスを持つエンティティタイプ(Commerce製品)があり、ボタンが関連付けられているエンティティオブジェクトからいくつかの値を抽出する必要があります。

これは、私のルールアクション情報が現在私のカスタムモジュールでどのように見えるかです。

_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"オブジェクトなどです。ただし、ルールのアクションを「Execute PHP Code」」に置き換えると、そこに$ entityオブジェクトがあり、dpm()により、実際には通常のすべてのプロパティが入力されていることがわかります。

当然、そのオブジェクトが存在するのに、カスタムアクションが受け取っていない理由を理解しようとしています。多分私はそれについて間違った方法で考えていますか?

これに新鮮な目を向けていただければ幸いです。必要に応じて詳細をお知らせいたします。

1
Riari

これは私が使用したパラメータタイプが原因であることがわかりました。 「エンティティ」に設定しましたが、エンティティタイプのマシン名である必要があります。 「commerce_product」に変更すると、問題が解決しました。

1
Riari