PrestaShop:如何在控制器中加载控制器


PrestaShop: How to load a controller inside a controller?

如何在控制器prestshop中加载控件?Opencart支持控制器内负载

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

所以preststore支持它吗?如果是,那怎么做?

我有一个控制器类别渲染自定义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();
}

我建议您使用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中简单地"打印"$menu var