在Opencart中加载库时如何传递参数?

时间:2019-02-05 14:46:44

标签: model-view-controller opencart opencart2.x opencart-3

我需要将参数传递给使用$this->load->library('MyLib')加载的Opencart库类。问题在于加载器仅接受单个参数。我想做这样的事情:

$this->load->library('MyLib', array('parameters') );

如何在加载库类时将参数数组传递给我的库类?

1 个答案:

答案 0 :(得分:1)

加载程序的library()方法仅允许使用单个参数:$route,但幸运的是,$this->registry作为单个参数传递给库的构造函数。要传递其他参数,您可以简单地将它们作为属性分配给注册表类,然后再加载库,如下所示:

$params = [
    'param_1' => 'abc',
    'param_2' => 'def'
];
$this->registry->set('MyLib_params', $params);

// now load your library
$this->load->library('MyLib');

然后,您可以像这样在库构造函数内部访问该属性:

class MyLib {
    public function __constructor($registry) {
        $this->params = $registry->get('MyLib_params');
        // do stuff with $this->params
    }
}

实际上,您也可以访问注册表中的任何内容,这对于获取各种数据(例如配置,会话,购物车等)很有用。