创建模块时,我想使用$ setting array
<?php
class ControllerModuleMymodule extends Controller {
protected function index($setting) {
...
但它是空的。我知道它来自管理员控制器,但如何填写它?
答案 0 :(得分:0)
(1.5.X回答)
{p>$setting
会自动填充mymodule_module
值。如果您查看OC附带的一些预制模块,您可以看到这样的示例。例如,帐户模块。您将看到可以添加多个模块并定位它们。每个设置都是一个数组,例如account_module[0]['layout_id']
和account_module[0]['position']
。 OpenCart加载account_module
设置并反序列化设置数组,然后通过for循环将每个设置依次传递给控制器。如果您查看模块的某个位置的来源,例如/catalog/controller/common/column_left.php
文件,则可以看到此信息。
$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']
);
}
}
}
}