plune Posted January 9, 2013 Share Posted January 9, 2013 Bonjour, Je viens vers vous car je n'arrive pas à créer un nouvel onglet dans le backoffice de prestashop. J'ai bien suivi la doc, cependant, rien ne s'affiche. A la différence de la démonstration de la doc, je ne souhaite pas lié cet onglet à un module. Voila ce que j'ai fais actuellement : ETAPE 1 : Création de Ticket.php dans /classes/ <?php class Ticket extends ObjectModel { echo "test"; } ETAPE 2 : Création de AdminTicket.php dans admin/tabs/ <?php include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); class AdminTicket extends AdminTab { public function __construct() { parent::__construct(); } public function displayForm() { echo "test"; } } ETAPE 3 : Création de la tab dans le BO Merci d'avance de votre aide. Link to comment Share on other sites More sharing options...
olo Posted January 9, 2013 Share Posted January 9, 2013 Bonjour, Quel est votre version de prestashop ? Cdt, Link to comment Share on other sites More sharing options...
plune Posted January 9, 2013 Author Share Posted January 9, 2013 La version 1.5.2 de prestashop. J'ai tout de même comparé les docs 1.4 et 1.5 et c'est la même chose :/ Link to comment Share on other sites More sharing options...
olo Posted January 9, 2013 Share Posted January 9, 2013 Mais je crois que la doc n'est pas tout a fait à jour. Moi j'ai suivi un tuto génial pour cela et cela fonctionne très bien :http://www.prestarocket.com/blog/creer-module-mvc-prestashop-1-5/ La partie back office est très claire. En plus si tu veux tu peux automatiser à l'installation du module la création de l'onglet pour cela suivre : $tab = new Tab(); $id_parent = Tab::getIdFromClassName('AdminCatalog'); $tab->name = 'ici le nom'; $tab->class_name = 'AdminNomClass'; $tab->id_parent = $id_parent; $tab->module = $this->name; $tab->add(); cela est un exemple pour le retrouver dans la liste catalogue... je me rappelle plus où j'ai trouvé l'exemple pour supprimer ... A la désinstallation $tab = new Tab((int)Tab::getIdFromClassName('AdminNomClasse')); $tab->delete(); Link to comment Share on other sites More sharing options...
franckm1000 Posted January 10, 2013 Share Posted January 10, 2013 J'ai jamais trop regardé la partie admin de la 1.5 mais il ne faut pas inclure un view de type TPL maintenant dans le BO ? Link to comment Share on other sites More sharing options...
plune Posted January 10, 2013 Author Share Posted January 10, 2013 Oui je ne sais pas :s Je m'arrache les cheveux depuis deux jours. Actuellement, j'ai un onglet supplémentaire et j'ai mon controller : controllers/admin/AdminTicketController.php <?php class AdminTicketController extends AdminController { public function __construct() { parent::__construct(); } } Si je fais ça, j'ai bien l'affichage de test mais dans une page vide, sans le menu d'administration : public function display() { echo "test"; } La question, doit-on utiliser une fonction displayQuelqueChose() pour pouvoir afficher notre désir dans le contenu ? Ou alors doit faire en sorte d'appeler un $this->setTemplate(_PS_THEME_DIR_.'ticket.tpl'); ? Link to comment Share on other sites More sharing options...
franckm1000 Posted January 10, 2013 Share Posted January 10, 2013 En 1.5 regardes plutôt du côté des fonctions init() et initcontent() Link to comment Share on other sites More sharing options...
plune Posted January 11, 2013 Author Share Posted January 11, 2013 Oui j'ai regarder, mon problème c'est qu'il n'affiche pas ce que je veux dans le contenu. class AdminTicketController extends AdminController { public function __construct() { parent::__construct(); } public function initContent() { echo "Je suis ici"; } } Voilà ce que ça rend ... Je comprend pas que ça soit si compliqué pour juste ajouter un onglet dans le backoffice et effectuer les traitements voulus ... Ou alors, qu'il y ai une documentation claire :s Ajouter un onglet dans le BO (sans utiliser de module), ca me parait pas dingue comme demande. En tout cas, si quelqu'un à une info, je suis preneur. Merci d'avance Link to comment Share on other sites More sharing options...
franckm1000 Posted January 11, 2013 Share Posted January 11, 2013 Eh bien quoi ça marche !! Tu vois pas que le "je suis ici" apparait tout en haut ? C'est parce que tu utilises un echo. Essaies avec return et tu verras Link to comment Share on other sites More sharing options...
plune Posted January 11, 2013 Author Share Posted January 11, 2013 Le return ne m'affiche rien :s Link to comment Share on other sites More sharing options...
franckm1000 Posted January 11, 2013 Share Posted January 11, 2013 A la place de la fonction initcontent() essaies ça: public function renderList() { $this->_html="ceci est un texte"; return $this->_html; } Link to comment Share on other sites More sharing options...
plune Posted January 12, 2013 Author Share Posted January 12, 2013 Yes, le renderList() fonctionne bien en renvoi de valeur. Cependant je me vois mal afficher tout mon HTML, javascript etc, dans une seule variable private que je return. Sinon, j'ai un peu décortiqué la chose et pour afficher les données d'une table de prestashop il suffit de faire : $this->table = 'contact'; $this->className = 'Contact'; $this->lang = true; $this->addRowAction('edit'); $this->addRowAction('delete'); $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?'))); $this->fields_list = array( 'id_contact' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 'name' => array('title' => $this->l('Title'), 'width' => 130), 'email' => array('title' => $this->l('E-mail address'), 'width' => 130), 'description' => array('title' => $this->l('Description'), 'width' => 150), ); La fonction renderForm(), permet la modification si $this->addRowAction('edit'); est ajouté. Du coup, j'affiche et modifie bien mes informations en base et c'est ce que je voulais faire. Mon problème est donc résolu. Cependant ça ne règle pas le souci de pouvoir écrire "ce que l'on veut" en HTML, CSS et pouvoir effectuer des traitement en PHP MYSQL. Enfin si, en renvoyant une valeur au renderList() ... En tout cas GRAND MERCI à toi franckm1000, tu m'as bien aidé ! Link to comment Share on other sites More sharing options...
franckm1000 Posted January 12, 2013 Share Posted January 12, 2013 (edited) Cependant je me vois mal afficher tout mon HTML Et pourquoi pas ! Quand je programme un module dans la fonction getContent() j'utilise toujours la syntaxe suivante: $this->output='...'; //traitement PHP par exemple; $this->output.='...'; //traitement divers; $this->output.='...'; return $output; Edited January 12, 2013 by franckm1000 (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