web-dev-qa-db-ja.com

「VBOビューからエンティティオブジェクトのリストをロードする」ルールアクションが機能しない

「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になります。エンティティはどこにありますか?自分の見方を設定したときに、明らかな何かを見逃しましたか?

3
John Alexander

この問題はDrupal.orgで報告され、対処されています: https://www.drupal.org/node/2853029

この問題に対処するために最新の開発バージョンが更新されました(バージョン7.x-3.x-dev)。

0
Joseph

useridもパラメータとして渡したいのですが、- VBOを使用して読み込むルールへのオブジェクトのリスト 。このビデオに表示される内容の概要は次のとおりです。

  • ルールで操作するエンティティを一覧表示するビューが必要です。ビューの表示は必要ないことに注意してください。ビューをどこかに表示したくない場合は、ビューを表示しない方がよい場合もあります。
  • ただし、1つの一括操作フィールドが必要です。一括操作フィールドのタイプによって、ルールに送信されるエンティティタイプが決まります。フィールドで有効になっているアクションは必要ありません。存在することで十分です。
  • アクションとして、VBOからエンティティをロードするルールが必要です。 (これは、「ビューの一括操作」グループで使用できます。)少なくとも1つのVBOフィールドを持つすべてのビュー表示を選択できます。
  • アクションはエンティティのリストを提供し、ルールの他のリストと同じように使用できます。ループ、アクション、およびルールスケジューラと組み合わせて、素晴らしい機能を実現します。
0
Pierre.Vriens

VBOフィールドがマスターディスプレイにロードされていることを確認します。ビューモジュールの設定では、このマスター表示を強制することができます。

0
elektrorl

正確な問題を特定しました。私がかなりあいまいなケースであるため、これが他の人に役立つかどうかはわかりませんが、念のため投稿します。

このサイトは_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のコピーを削除すると、再び機能します。

0
John Alexander