3

Extbase (最新バージョン、最新のtyp3) で拡張機能を構築しており、モデルにリポジトリを注入しています。

これは単に機能しません。エラーも手がかりも何もありません。inject* メソッドは単に呼び出されません。まったく同じインジェクションがコントローラーで機能します。

Extbase のモデルにリポジトリを挿入することは可能ですか? 一般に、モデルへのインジェクションは 1.4 以降で可能です。

どうすればこれをデバッグできますか? どこを見ればいいですか?

4

2 に答える 2

3

これはよくある誤解です。

TYPO3 CMS で使用するすべてのクラスがデフォルトで依存性注入を使用するわけではありません。これは良いことです。

真実は、ObjectManager によってインスタンス化されたすべてのオブジェクトがそれから利益を得ることができるということです。

要するに、あなたnew Thing()が反対する場合、依存性注入の恩恵を受けません。を使用しObjectManagerて何かのインスタンスを取得すると、依存性注入のガロア全体が新しいインスタンスに降り注ぎます。

注入されたオブジェクトは objectManager によってインスタンス化されることに注意してください。注入されたServiceAが必要な場合は、再帰が可能ですServiceB

マーカー インターフェイスを実装すれば、シングルトンも可能ですSingletonInterface

于 2015-04-28T10:46:51.147 に答える
2

依存性注入は、ObjectManager. 古き良きものを使用している場合

t3lib_div::makeInstance('Tx_yourextension_domain_model_thing')

inject* メソッドは呼び出されていません。

それがどのように機能するかを説明するドイツのブログエントリがあります。

于 2012-03-21T16:00:59.263 に答える