多个JS Engine Helpers cakephp 2.x.

时间:2014-01-09 22:36:55

标签: cakephp plugins

我有两个插件都需要扩展JqueryEngineHelper。

我知道您只能在AppController Helpers中指定一个引擎。

如何在两个插件中扩展JqueryEngineHelper?我让他们都工作,但我不能让他们同时工作。

$helpers = ['Js'=>['MyPlugin.MyPluginJquery', 'MyPlugin2.MyPlugin2Jquery']];

我希望两者兼顾,但不幸的是他们没有。只使用第一个。

来自其中一个引擎的代码

App::uses('AppHelper', 'View/Helper');
App::uses('JqueryEngineHelper', 'View/Helper');

class MrgCustomSelectJqueryEngineHelper extends JqueryEngineHelper{

    function __construct(View $view, $settings = array()){
        parent::__construct($view, $settings = array());

        $this->_init_callbacks();
    }

    protected function _init_callbacks(){
        $callbacks = [
            'selectBoxIt'=>[]
        ];
        $this->_callbackArguments = array_merge($this->_callbackArguments, $callbacks);
    }


    public function selectBoxIt($options = []){
        $template = '%s.selectBoxIt({%s});';
        return $this->_methodTemplate('selectBoxIt', $template, $options);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你将不得不改变插件,以免它们发生冲突。根据插件的工作方式,可能有不同的方法可以解决这个问题:

  1. 此时只加载您需要的Js助手版本。仅在单个控制器操作不需要两者时才有效。
  2. 更改插件以通过不同的名称引用不同版本的Js助手。这可能需要大量的搜索和替换。
  3. 如果插件如何扩展Js助手之间没有冲突,则可以合并两个助手。