2016-08-27 47 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。非常感謝你 –