Jump to content

Nuevos 'Tab' en el backoffice


Kaizo

Recommended Posts

Hola!
Estoy tratando de crear mi primer módulo, el cual realiza varias modificaciones, entre ellas añadir nuevas pestañas en el backoffice para poder acceder a las tablas creadas por este módulo y poder modificarlas, el problema es que no me registra la pestaña padre y por lo tanto las hijas se quedan desactivadas colgando de la raíz, uso el siguiente código:

public function install()
{
       $sqlInstall = dirname(__FILE__) . '/sql/install.sql';      
        
        return  parent::install() &&
                MLib::cargaFicheroSQL($sqlInstall) &&
                $this->createModuleTab('AdminMyParentTab', 'Connecter', '') &&
                $this->createModuleTab('AdminMyProduct', 'Productos', 'MParentTab') &&
                $this->createModuleTab('AdminMyVolumePrices', 'Precios por volumén', 'MParentTab')
        ;
}

public function createModuleTab($className, $displayName, $tabParent) 
{
        $tab = new Tab();
        $tab->active = 1;
        $tab->class_name = $className;
        $tab->name = array();
        foreach (Language::getLanguages(true) as $lang) {
          $tab->name[$lang['id_lang']] = $displayName;
        }
        if($tabParent) {
          $tab->id_parent = (int) Tab::getIdFromClassName($tabParent);
        } else {
          $tab->id_parent = 0;
        }
        $tab->module = $this->name;
        return $tab->add();
}

Si creo el registro en la DDBB directamente y lo asocio tanto en la tabla ps_tab como en la ps_tab_lang todo funciona correctamente.

Las clases y controllers 'AdminMyProduct' y 'AdminMyVolumePrices' las tengo creadas, y como he dicho si modifico la BBDD puedo ver los datos en sus respectivas pestañas.

Mirando otro módulo he visto que no es necesario tener un controlador y una clase para la pestaña padre (AdminMyParentTab), la cual en mi caso sólo es un texto mostrado ¿Es necesario crearla? ¿Hay algo mal en el código que no logro ver?.

Gracias de antemano por vuestro tiempo.

Link to comment
Share on other sites

amablemente reemplazar

 

return  parent::install()&&MLib::cargaFicheroSQL($sqlInstall)&&
                $this->createModuleTab('AdminMyParentTab','Connecter','')&&
                $this->createModuleTab('AdminMyProduct','Productos','MParentTab')&&
                $this->createModuleTab('AdminMyVolumePrices','Volume pricing' , 'MParentTab');

 

con

 

return  parent::install()&&MLib::cargaFicheroSQL($sqlInstall)&&
                $this->createModuleTab('AdminMyParentTab','Connecter','SELL')&&
                $this->createModuleTab('AdminMyProduct','Productos','MParentTab')&&
                $this->createModuleTab('AdminMyVolumePrices','Volume pricing' , 'MParentTab');

 

Link to comment
Share on other sites

15 hours ago, Knowband Plugins said:

amablemente reemplazar

 

return  parent::install()&&MLib::cargaFicheroSQL($sqlInstall)&&
                $this->createModuleTab('AdminMyParentTab','Connecter','')&&
                $this->createModuleTab('AdminMyProduct','Productos','MParentTab')&&
                $this->createModuleTab('AdminMyVolumePrices','Volume pricing' , 'MParentTab');

 

con

 

return  parent::install()&&MLib::cargaFicheroSQL($sqlInstall)&&
                $this->createModuleTab('AdminMyParentTab','Connecter','SELL')&&
                $this->createModuleTab('AdminMyProduct','Productos','MParentTab')&&
                $this->createModuleTab('AdminMyVolumePrices','Volume pricing' , 'MParentTab');

 

Hola, gracias por tu respuesta e interes.

Ya traté de aplicar esa solución y el resultado es exactamente el mismo, me crea los 2 Tab colgando de raíz sin crear el primero, incluso he provado desde la función de install(), de forma manual, crear el padre colgando de raíz y el resultado es el mismo, sólo crea 1 de los 2 hijos y el otro cuelga de raíz.

En cambio si aplico esta solución todo funciona correctamente, aunque me parece una solución muy fea...

 public function install()
    {
       $sqlInstall = dirname(__FILE__) . '/sql/install.sql';

       //Tab1
        $tab = new Tab();
        $tab->active = 1;
        $tab->class_name = 'MyParentTab';
        $tab->name = array();
        foreach (Language::getLanguages(true) as $lang) {
          $tab->name[$lang['id_lang']] = 'MyConnect';
        }
        $tab->id_parent = (int) Tab::getIdFromClassName('SELL');        
        $tab->module = $this->name;
        $tab->add();

        //Tab2
        $tab = new Tab();
        $tab->active = 1;
        $tab->class_name = 'AdminMyProduct';
        $tab->name = array();
        foreach (Language::getLanguages(true) as $lang) {
          $tab->name[$lang['id_lang']] = 'Productos';
        }
        $tab->id_parent = (int) Tab::getIdFromClassName('MyParentTab');      
        $tab->module = $this->name;
        $tab->add();

        //Tab3
        $tab = new Tab();
        $tab->active = 1;
        $tab->class_name = 'AdminMyVolumePrices';
        $tab->name = array();
        foreach (Language::getLanguages(true) as $lang) {
          $tab->name[$lang['id_lang']] = 'Precios por volumén';
        }
        $tab->id_parent = (int) Tab::getIdFromClassName('MyParentTab');        
        $tab->module = $this->name;
        $tab->add();

        return  parent::install() &&
                MLib::cargaFicheroSQL($sqlInstall);
    }

Seguiré explorando a ver que pasa...

 

Edited by Kaizo (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...