Kaizo Posted October 18, 2022 Share Posted October 18, 2022 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 More sharing options...
Knowband Plugins Posted October 18, 2022 Share Posted October 18, 2022 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 More sharing options...
Kaizo Posted October 19, 2022 Author Share Posted October 19, 2022 (edited) 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 October 19, 2022 by Kaizo (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now