web-dev-qa-db-ja.com

エンティティモジュールの非オブジェクトでのメンバー関数label()の呼び出し

Entity APIを使用してエンティティタイプを作成し、エクスポート可能にしました。 exportリンクは正しく機能しますが、Importでは次のエラーが発生します。

致命的なエラー:903行目の[...]\sites\all\modules\entity\entity.moduleの非オブジェクトのメンバー関数label()への呼び出し

理由は何も見つからなかった。
これが私のhook_entity_info()です:

_$return = array(
  'event' => array(
    'label' => t('Event'),
    'entity class' => 'EventClass',
    'controller class' => 'EventController',
    'base table' => 'calendar_events',
    'fieldable' => TRUE,
    'entity keys' => array(
      'id' => 'eid',
    ),
    'load hook' => 'events_load',
    'view modes' => array(
      'full' => array(
        'label' => t('Default'),
        'custom settings' => FALSE,
      ),
    ),
    'label callback' => 'entity_class_label',
    'uri callback' => 'entity_class_uri',
    'module' => 'events',
    'access callback' => 'event_access',
    'exportable' => TRUE,
    'admin ui' => array(
      'path' => 'admin/structure/events',
      'file' => 'events.admin.inc',
      'controller class' => 'EventsUIController',
    ),
  ),
);
_

さらに情報が必要な場合は教えてください。

[編集]
sites/all/modules/entity/entity.module:903_のentity_class_label($entity)でエラーが発生したと考えました。 _$entity_の内容を印刷しましたが、NULLのようです。
なぜNULLなのですか?

1
Pedram Behroozi

これはEntity APIモジュールのバグのようです。

まったく同じエラーメッセージの問題が報告されました ここ Profile2モジュール(Entity APIをかなり頻繁に使用します)に関係しています。

その投稿の結果、問題はエンティティAPIのバグであり、その詳細は コンテンツ構築時に参照フィールドをロードする で確認できます。

上記からわかるように、問題を修正するために利用可能なパッチがあります。テストに合格した最新のパッチは2011年11月16日でした。

Entity APIモジュールの最新の安定版リリースを見ると、その日付が2011年11月10日であることがわかります。これは、パッチがおそらく安定版にまだ組み込まれていないため、ご使用のバージョンで修正されていないことを意味しますモジュール。

できることは2つあります。

  • Entity APIモジュールの開発バージョンにアップグレードします(もちろん、通常の量の注意を払う必要があり、ライブサイトではこれを実行したくないでしょう)。
  • 他のユーザーの問題を解決したと思われるentity.controller.incファイルに パッチ を適用します。
2
Clive