「VBOビューからエンティティオブジェクトのリストをロードする」というルールアクションを使用しようとしています。以前は機能していましたが、それ以降、DBを製品版から更新しました。ビューがどのように表示されたか思い出せません。セットアップを最も基本的なバニラ構成にまで減らしましたが、それでも機能しません。
これが私がやったことです:
ユーザーのビューを作成しました。ページなし;ブロックなし;フィルターなしのユーザーのマスター表示のみ。 2つのフィールド:ユーザー名と一括操作チェックボックス(アクションなし、すべてデフォルト)。
次に、ルールを作成しました。このイベントは「コンテンツを表示する」だけなので、すばやく繰り返すことができます。このアクションでは、「VBOビューからエンティティオブジェクトのリストをロードする」を選択しました。ノードを表示すると(ルールをトリガーします)、ログに「データ値を取得できません。エラー:無効なデータ値が指定されています。必要なデータタイプと形式に一致していることを確認してください」というエラーメッセージがポップアップ表示されます。
その理由は、関数views_bulk_operations_action_load_list()
がFALSE
からentity_metadata_wrapperを作成しようとしているためです。正確な行は_views_bulk_operations.rules.inc:176
_です:
_$entities[] = entity_metadata_wrapper($entity_type, $vbo->get_value($result)); // $entity_type == 'user'
_
_$vbo->entities
_はFALSE
であるため、$vbo->get_value($result)
はNULL
になります。エンティティはどこにありますか?自分の見方を設定したときに、明らかな何かを見逃しましたか?
この問題はDrupal.orgで報告され、対処されています: https://www.drupal.org/node/2853029
この問題に対処するために最新の開発バージョンが更新されました(バージョン7.x-3.x-dev)。
useridもパラメータとして渡したいのですが、- VBOを使用して読み込むルールへのオブジェクトのリスト 。このビデオに表示される内容の概要は次のとおりです。
- ルールで操作するエンティティを一覧表示するビューが必要です。ビューの表示は必要ないことに注意してください。ビューをどこかに表示したくない場合は、ビューを表示しない方がよい場合もあります。
- ただし、1つの一括操作フィールドが必要です。一括操作フィールドのタイプによって、ルールに送信されるエンティティタイプが決まります。フィールドで有効になっているアクションは必要ありません。存在することで十分です。
- アクションとして、VBOからエンティティをロードするルールが必要です。 (これは、「ビューの一括操作」グループで使用できます。)少なくとも1つのVBOフィールドを持つすべてのビュー表示を選択できます。
- アクションはエンティティのリストを提供し、ルールの他のリストと同じように使用できます。ループ、アクション、およびルールスケジューラと組み合わせて、素晴らしい機能を実現します。
VBOフィールドがマスターディスプレイにロードされていることを確認します。ビューモジュールの設定では、このマスター表示を強制することができます。
正確な問題を特定しました。私がかなりあいまいなケースであるため、これが他の人に役立つかどうかはわかりませんが、念のため投稿します。
このサイトは_views_bulk_operations
_を含むOpen Atriumを使用していますが、_views_bulk_operations
_の個別のコピーも作成し、パッチを適用して、独自の_sites/all/modules
_ディレクトリに配置しました。私の知る限り、2つのコピーがあると、PHPクラス継承チェーンがどういうわけか壊れます。具体的には、_views_bulk_operations.rules.inc:176
_で:
_$entities[] = entity_metadata_wrapper($entity_type, $vbo->get_value($result));
_
_$vbo
_は_views_bulk_operations_handler_field_operations
_のインスタンスであり、これは_views_handler_field_entity
_を拡張し、次に_views_handler_field
_を拡張します。適切に機能しているサイトでは、上記の行はviews_handler_field::get_value()
を呼び出しますが、前のサイトではviews_handler_field_entity::get_value()
を呼び出しています。恒久的な修正がどうなるかはわかりませんが、パッチを適用したVBOのコピーを削除すると、再び機能します。