2016-03-22 9 views
1

自分の拡張機能のフックを作成して、他の拡張機能の1つで拡張機能で定義された関数を使用できるようにしたいと考えています。TYPO3で独自のフックを作成する

誰かが2つの内線間の通信を作成するための新しいフックを作成する方法を知っていますか?

+1

あなたはあなたがすでに見た場所の参考文献とあなたが試したもののいくつかの例がありますか? – gmaniac

答えて

1

シングルス/スロットパターンに進みます。

コード内でシグナルを発信し、そのシグナルを待ち受けるスロットを登録して、プロセスにフックすることができます。

、信号を発するSignalSlotDispatcherを注入する:

/** 
* @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher 
* @inject 
*/ 
protected $signalSlotDispatcher; 

そして、あなたのコードの中で、あなたがこのように信号を発することができる:あなたがリッスンスロットを登録することができ、あなたの第二の拡張で

$this->signalSlotDispatcher->dispatch(
    __CLASS__, 
    'MySignalName', 
    [$param1, $param2, $this] 
); 

をあなたのその信号ext_localconf.php

$signalSlotDispatcher = \TYPO3\CMS\Core\Utility 
\GeneralUtility::makeInstance(TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class); 
$signalSlotDispatcher->connect(
    \Your\Class\With\The\Signal::class, 
    'MySignalName', 
    Your\Class\With\The\Slot::class,  
    'mySlotMethod', 
    false 
); 

次に、スロットクラスにとあなたのものをしてください。


編集:トピックhereに関する詳細なチュートリアルを書きました。

+0

SignalSlotDispatcherはどこに注入されますか?クラスまたはext_localconf.php – forethought

+0

あなたが信号を送信するクラスです。 ext_emconfでは注入できません。そのためDispatcherはGeneralutility :: makeInstance()で初期化されます。 – Daniel

+0

シグナルコードスニペットを発行する際に、MySignalNameと[$ param1、$ param2、$ this]は何ですか?それはアクションメソッドの後、または前か内部か? – forethought

関連する問題