通过控制器中的功能加载视图

时间:2013-08-04 14:40:36

标签: php templates opencart

我想在opencart中选择产品时,将尺寸图表设为选项卡。为此,我有一个如下的模型

class ModelCatalogSizes extends Model {     
    public function getSizes()
    {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "sizes ORDER BY id");
        return $query->rows;
    }
}

我有一个视图作为模板,它只是一个带有值作为输入无线电选项的html表。

在我的产品控制器类中,我有一个类似下面的功能

public function sizes()
{
    $this->language->load('product/product');

    $this->load->model('catalog/sizes');

    $this->data['sizes'] = array();

    $results = $this->model_catalog_sizes->getSizes();

    foreach ($results as $result) {
        $this->data['sizes'][] = array(
            'type'       => ucfirst($result['type']),
            'coat'       => $result['coat'],
            'chest'      => $result['chest'],
            'cverarm'    => $result['overarm'],
            'waist'      => $result['waist'],
            'hip'        => $result['hip'],
            'inseam'     => $result['inseam'],
            'neck'       => $result['neck'],
            'sleeve'     => $result['sleeve'],
            'height'     => $result['height'],
            'weightLb'   => $result['weightLb'],
            'weightKg'   => $result['weightKg'],
        );
    }

    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/sizes.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/product/sizes.tpl';
    } else {
        $this->template = 'default/template/product/sizes.tpl';
    }

    $this->response->setOutput($this->render());
}

现在我试图通过说$this->data['size'] = $this->sizes();

通过产品控制器类中的索引函数直接加载此视图

当我在产品视图中回显我的$ size时,什么都没有出现。我认为上面函数中构建的整个视图应该显示出来。我错了(概率99%)?有人可以帮我直接通过功能发布视图吗?

1 个答案:

答案 0 :(得分:1)

您需要做的是为index()方法的子项添加路由 打开/catalog/controller/product/product.php并在index()方法

的底部找到此代码
$this->children = array(
    'common/column_left',
    'common/column_right',
    'common/content_top',
    'common/content_bottom',
    'common/footer',
    'common/header'
);

并添加您的路线,'product/product/sizes'方法

sizes()
$this->children = array(
    'common/column_left',
    'common/column_right',
    'common/content_top',
    'common/content_bottom',
    'common/footer',
    'common/header',
    'product/product/sizes'
);

然后在您的模板中,您只需要在任何您想要的地方使用<?php echo $sizes; ?>