首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块控制器函数索引( $setting )中的opencart $setting变量为空

模块控制器函数索引( $setting )中的opencart $setting变量为空
EN

Stack Overflow用户
提问于 2014-10-26 07:10:55
回答 1查看 1.8K关注 0票数 1

在创建模块时,我希望使用$setting数组

代码语言:javascript
复制
<?php
class ControllerModuleMymodule extends Controller {
  protected function index($setting) {
...

但它是空的。我知道它是从管理员那里得到的,但是怎么填呢?

EN

回答 1

Stack Overflow用户

发布于 2014-10-26 07:47:29

(1.5.X答案)

$settingmymodule_module值自动填充。如果你看一下OC附带的一些预制模块,你就会看到一个这样的例子。例如,account模块。您将看到可以添加多个模块并对它们进行定位。每个参数的设置都是一个数组,比如account_module[0]['layout_id']account_module[0]['position']。OpenCart加载account_module设置并反序列化设置数组,然后通过for循环依次将每个设置传递给控制器。如果您查看一个模块可能所在位置的源代码,例如/catalog/controller/common/column_left.php文件,就可以看到这一点。

代码语言:javascript
复制
    $extensions = $this->model_setting_extension->getExtensions('module');      

    foreach ($extensions as $extension) {
        // Loads the settings for all of this extensions modules and unserializes (this is done behind the scenes of the get() method)
        $modules = $this->config->get($extension['code'] . '_module');

        if ($modules) {
            // Loop for each module to be rendered (checking it's valid for this particular position)
            foreach ($modules as $module) {
                if ($module['layout_id'] == $layout_id && $module['position'] == 'column_left' && $module['status']) {
                    $module_data[] = array(
                        'code'       => $extension['code'],
                        'setting'    => $module, // This data is passed to your controller in subsequent code
                        'sort_order' => $module['sort_order']
                    );              
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26568204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档