コントローラのGedmo \ Timestampableリスナを無効にしてから、同じリクエスト内でリスナを有効にする必要があります。ここでそれを無効にする方法です。 https://github.com/Atlantic18/DoctrineExtensions/issues/1722 私はそれを有効にすることについて何かを見つけることができません。出来ますか?Symfony 2のイベントリスナを無効にしてから再び有効にすることは可能ですか?
3
A
答えて
2
同じソリューションを使用する場合は、対応するaddEventListener()
機能があります。すべてのイベントリスナーを最初に(おそらく同じクラスに)保存することをお勧めします。このようなもの:
class MyClass
{
private $listeners;
private function disableTimestampable()
{
$evm = $this->em->getEventManager();
$this->listeners = $evm->getListeners();
foreach ($evm->getListeners() as $event => $listeners) {
foreach ($listeners as $hash => $listener) {
if ($listener instanceof \Gedmo\Timestampable\TimestampableListener) {
$evm->removeEventListener(
array('prePersist', 'loadClassMetadata', 'onFlush'),
$listener
);
}
}
}
}
private function enableTimestampable()
{
$evm = $this->em->getEventManager();
foreach ($this->listeners as $event => $listeners) {
foreach ($listeners as $hash => $listener) {
if ($listener instanceof \Gedmo\Timestampable\TimestampableListener) {
$evm->addEventListener(
array('prePersist', 'loadClassMetadata', 'onFlush'),
$listener
);
}
}
}
}
}
+0
ご返信ありがとうございます。これらのリスナーは$ evm-> getListeners()を使用してアクセスできますか? –
+0
フェアポイント、彼らはされません。クラスのように一時的にどこかに保存したいと思うでしょう。私はそれを反映するために私の答えを変更しました。 –
0
ありがとうございました。私はリスナーを節約して同等の解決策を試したが、うまくいかなかった。また、私はリスナーを削除すると間違った方向にいることがわかりました。よりシンプルでクリーンな解決策は、
フィールドのタイムスタンプ可能な機能を無効にし、Entityの永続化の直前にEntityのサービスクラス内の値を手動で更新することです。
関連する問題
- 1. SKActionアニメーションを無効にしてから再び有効にすることはできません。
- 2. 無効にしてから再度有効にするonClick()
- 3. MotionEvent.ACTION_POINTER_DOWN&UPを無効にすることは可能ですか
- 4. CSSボタン:ホバー、無効にしてからJavaScriptを無効にして再度有効にする
- 5. 2コンボボックスからの値を有効および無効にする方法。 C#
- 6. シングルアクションでボタンを無効にして再度有効にする
- 7. マクロを無効にしてから再度有効にしてください
- 8. 有効なSSL証明書を無効にすることは可能ですか
- 9. コンパイル前に有効なHTMLとしてASP.NETページを有効にすることは可能です
- 10. アンドロイドで振動機能を有効/無効にしますか?
- 11. npm3でflatternを無効にすることは可能です
- 12. Jqueryの機能を無効にして有効にする
- 13. disable_withで無効にしたリンクを再度有効にする
- 14. Symfony 2:Monologを無効にする
- 15. application.cfcでJ2EEセッションを有効/無効にすることはできますか?
- 16. PythonでUSBデバイスを有効/無効にすることはできますか?
- 17. XWalkViewでJavascriptを無効にして再度有効にする方法は?
- 18. Nginx設定:HTTPSでGzipを有効にすることは可能ですか
- 19. ReSharperでAgent Smith検査を有効にすることは可能ですか?
- 20. Yammer - api経由でユーザーを有効にすることは可能ですか?
- 21. YouTube API iFrame Playerのクッキーを無効にすることは可能ですか?
- 22. アプリフォルダのドロップボックス通知を無効にすることは可能ですか
- 23. UITouch - 複数のタッピングを無効にすることは可能ですか
- 24. ライブラリの依存関係を無効にすることは可能ですか
- 25. ダイナミックテキストフィールドを有効にすることを無効にする
- 26. 要素のhrefとonclickを無効にする(そして再び有効にする)
- 27. Javascriptで要素を無効にしてから有効にする方法
- 28. pythonコードからvirtualenvを有効/無効にする方法は?
- 29. vb.netコードからコンテキストメニューを有効または無効にする
- 30. オプションから選択を有効または無効にする
私の答えはあなたのために働いたのですか? –