1

次のコードがあります。

    public function _setHelpers() {
        Zend_Controller_Action_HelperBroker::addPrefix('My_Controller_Action_Helpers');
        Zend_Controller_Action_HelperBroker::addPath ( APPLICATION_PATH . '/controllers/helpers' );
    }

これにより、My/Controller/Action/Helpers/Helper.php または /application/controllers/helpers/Helper.php にヘルパーを追加できます。それは問題ありませんが、/application/ のヘルパーを優先する必要があります。つまり、両方のヘルパーに My/Controller/ のヘルパーではなく /application のヘルパーをロードさせる場合...

編集

コードを次のように変更することで、これを修正できました。

    public function _setHelpers() {
    $prefix = 'My_Controller_Action_Helpers';
    Zend_Controller_Action_HelperBroker::addPrefix ( $prefix );
    Zend_Controller_Action_HelperBroker::addPath ( APPLICATION_PATH . '/controllers/helpers', 'My_Controller_Action_Helper' );
    return $this;
}

お気づきかもしれませんが、ほとんど同じですが、パスを追加するときにプレフィックスも追加したという違いがあります。ご協力いただきありがとうございます。

4

1 に答える 1

1

Helper Broker に追加されたプラグイン パスZend_Loader_PluginLoaderは、パスに LIFO スタックを使用するため、最後に追加されたパスが最初にチェックされます。コードを考えると、パスを 2 番目に追加しているため、 (両方とも同じメソッドを呼び出すので、それらは事実上同じものになりapplicationます) のファイルよりも優先されるはずです。My/ControlleraddPrefixaddPathZend_Loader_PluginLoader

これはあなたが見つけているものではありませんか?

于 2012-04-26T01:52:51.183 に答える