prestashop пользовательский подключаемый модуль администратора - PullRequest
0 голосов
/ 18 октября 2018

В настоящее время я занимаюсь разработкой модуля prestashop и у меня возникла проблема.Я создал новый хук для моего модуля, и я добавляю контроллер администратора в мой модуль, который выполняет этот хук, я добавляю функцию, которая вызывает хук и использует шаблон.За исключением того, что шаблон не появляется, у меня есть пустая страница.Вот код, который я сделал:

Мой модуль:

<?php

if (!defined('_PS_VERSION_'))
    exit;
/* Checking compatibility with older PrestaShop and fixing it */
if (!defined('_MYSQL_ENGINE_'))
    define('_MYSQL_ENGINE_', 'MyISAM');

require_once(_PS_MODULE_DIR_.'blockobjectif/classes/Objectif.php');

class blockobjectif extends Module
{
    public function __construct()
    {
        $this->name = 'blockobjectif';
        $this->tab = 'front_office_features';
        $this->version = '1.0';
        $this->author = 'Athor Athor';
        $this->bootstrap = true;
        $this->need_instance = 0;
        $this->ps_versions_compliancy['min'] = '1.5';
        $this->ps_versions_compliancy['max'] = '1.6';

        parent::__construct();

        $this->displayName = $this->l('Objectifs');
        $this->description = $this->l('Définie des objectifs aux clients');
    }

    public function install()
    {
        $sql = array();
        include(dirname(__FILE__).'/sql/install.php');
        foreach ($sql as $s)
            if (!Db::getInstance()->execute($s))
                return false;

        $class = 'AdminObjectif';
        $tab = new Tab();
        $tab->class_name = $class;
        $tab->module = $this->name;
        $tab->id_parent = (int) Tab::getIdFromClassName('AdminParentCustomer');
        $langs = Language::getLanguages(false);
        foreach ($langs as $l) {
            $tab->name[$l['id_lang']] = $this->l('Objectifs');
        }
        $tab->save();

        return parent::install()
            && $this->registerHook('displayCustomerAccount')
            && $this->registerHook('displayAdminObjectifs');
    }

    public function uninstall($delete_params = true)
    {
        $sql = array();
        include(dirname(__FILE__).'/sql/uninstall.php');
        foreach ($sql as $s)
            if (!Db::getInstance()->execute($s))
                return false;

        $moduleTabs = Tab::getCollectionFromModule($this->name);
        if (!empty($moduleTabs)) {
            foreach ($moduleTabs as $moduleTab) {
                $moduleTab->delete();
            }
        }

        if (!parent::uninstall())
            return false;

        return true;
    }

    public function hookDisplayCustomerAccount($params)
    {
        ddd($params);
    }

    public function hookDisplayAdminObjectifs($params)
    {
        return $this->display(__FILE__, 'admin-obj.tpl');
    }
}

Мой AdminObjectifController:

<?php

class AdminObjectifController extends ModuleAdminController
{
    public function __construct()
    {
        $this->bootstrap = true;
        $this->table = 'objectifs';
        $this->className = 'Objectif';

        parent::__construct();

        Hook::exec('displayAdminProductsExtra');
    }
}

Результат: objectifs

Не понимаю, откуда возникла проблема ...

Спасибо за помощь

1 Ответ

0 голосов
/ 18 октября 2018

Это неправильный метод для отображения шаблона контроллера backoffice.

Вот что вы должны попробовать:

<?php

class AdminObjectifController extends ModuleAdminController
{
    public function __construct()
    {
        $this->bootstrap = true;
        $this->table = 'objectifs';
        $this->className = 'Objectif';

        parent::__construct();
    }

    public function initContent()
    {
        $tpl = $this->context->smarty->createTemplate($this->getTemplatePath() . 'admin-obj.tpl', $this->context->smarty);


        $tpl->assign(array(
            'my_var' => "test"
        ));

        $this->content .= $tpl->fetch();
        parent::initContent();
    }
}

Обратите внимание, что ваш admin-obj.tpl файл должен быть помещен в views/templates/admin/admin-obj.tpl внутри вашего модуля.

...