6

と呼ばれるzf2モジュールを使用していGoalioRememberMeますが、カスタマイズしたサービスでそのサービスをオーバーライドしたいと考えています。または、それが不可能な場合は、設定で Module.php をオーバーライドしたいと考えています。出来ますか?

アプリケーション モジュール内。module.config.php に次の行を書きました。
'GoalioRememberMe\Service\RememberMe' => 'Application\Service\RememberMe'

前もって感謝します!

4

3 に答える 3

1

ジュリアンが言ったように、サービス名はであり、メソッドgoaliorememberme_rememberme_serviceに設定されています。そこで、アプリケーション モジュール getServiceConfig()のファイルに次のコードを書きました。Module.php

$serviceManager->
            setAllowOverride(true)->
            setInvokableClass('goaliorememberme_rememberme_service', 'Application\Service\CustomRememberMe')->
            setAllowOverride(false);

そして、それは私のカスタマイズされたサービスにうまく置き換えられました!
大きな助けをしてくれたジュリアンに感謝します!

于 2013-11-13T21:53:32.843 に答える
0

実際には、サービス マネージャーは最初に、次のように名前を「正規化」するメソッド「canonicalizeName()」を実行します。

  1. すべての _ / \ と - が取り除かれます
  2. キーは小文字にする

したがって、「Goaliorememberme\Service\RememberMe」と「goaliorememberme_rememberme_service」の両方が「goalioremembermeremembermeservice」になり (つまり、どちらも同じ)、エラー メッセージが表示されます。

既存のサービスをオーバーライドする最も簡単な方法は、/config/autoload フォルダーに *local.php または *global.php ファイルを作成することです。(そのフォルダーは config/application.config.php で識別されます。) このフォルダー内のオーバーライド ファイルは、モジュールがロードされた後に処理されます。サービス マネージャー キーが重複している場合は、最後のキーが優先されます。

于 2014-01-15T15:34:02.823 に答える