2016-08-27 48 views
1

如何在控制器prestashop中加载控件? Opencart的控制器内部支持负载控制器PrestaShop:如何在控制器内加载控制器?

$data['efgh'] = $this->load->controller('abcd/efgh'); 

这样的Prestashop支持它?如果是,那么如何?

我有一个控制器类别显示自定义TPL

public function renderList(){ 

    $tpl = $this->createTemplate('dashboard.tpl'); 

    // Category 
    $categories = GenCategory::getCategories(); 
    $public_categories = GenCategory::getPublicCategories(); 
    $unpublic_categories = GenCategory::getUnpublicCategories(); 

    $tpl->assign(array(
     // Category 
     'categories' => $categories, 
     'public_categories' => $public_categories, 
     'unpublic_categories' => $unpublic_categories, 
    )); 
    return $tpl->fetch(); 
} 

和控制菜单显示自定义TPL

public function renderList(){ 

    $tpl = $this->createTemplate('menu.tpl'); 

    $menu = GenMenu::getMenu(); 

    $tpl->assign(array(
     'menu' => $menu, 
    )); 
    return $tpl->fetch(); 
} 

我需要证明里面分类菜单。

+1

这是一个你的模块控制器?你需要哪个控制器? PrestaShop只有控制器,你是什么意思控制? prestashop的哪个版本? – sarcom

+0

嗨sarcom。我有一个控制器类别(由我制作)和一个控制器菜单。 2控制器呈现自定义tpl。我需要在类别中加载菜单以显示类别的tpl内的菜单的tpl。我使用prestashop 1.6 –

+0

对不起,但这是一个矛盾。您已经有了一个控制器,此时还可以在类别控制器中获取menu.tpl。 PS:您在错误模式下使用renderList方法:),您必须使用init()方法或initContent()方法。它是一个前台或后台控制器?它是模块的控制器? – sarcom

回答

1

我会建议你使用initContent()方法,而不是renderList,以这样的方式

public function initContent(){ 
    // Category 
    $categories = GenCategory::getCategories(); 
    $public_categories = GenCategory::getPublicCategories(); 
    $unpublic_categories = GenCategory::getUnpublicCategories(); 

    // Menu 
    $menu = $this->genMenu(); 

    $this->context->smarty->assign(array(
     // Category 
     'categories' => $categories, 
     'public_categories' => $public_categories, 
     'unpublic_categories' => $unpublic_categories, 
     // Menu 
     'menu' => $menu 
    )) 
    $this->setTemplate(`rightdirectoryofyourtpl`.'dashboard.tpl'); 
} 

public function genMenu(){ 
    $menu = GenMenu::getMenu(); 

    $this->context->smarty->assign(array(
     'menu' => $menu, 
    )); 
    return $this->context->smarty->fetch(`directoryofyourtpl`/menu.tpl) 
} 

然后在您的TPL简单的“打印”的$菜单VAR

+0

否则,你必须使用PrestaShop挂钩 – sarcom

+0

对不起,但它是一个后台控制器,我试过你的方式,它不工作:) 你能指导我通过Skype?我的Skype vdhoangson。非常感谢你 –