Jump to content

Prestashop 1.5 : création d'un module avec onglet admin mais sans modèle


Recommended Posts

Bonjour,

Je suis pour la première fois sur un presta 1.5 et souhaite comprendre au mieux le fonctionnement des nouveautés apportées par le portage du MVC sur la partie admin.

 

Je créé un module d'import/export qui n'a pas à intéragir avec la base pour le moment et souhaite pouvoir gérer la configuration de ce module via un onglet d'admin. Pour le moment je ne parviens qu'à une page vide (j'ai bien le header et footer Presta, pais impossible d'afficher quoi que ce soit...). Les différents tuto que j'ai trouvé imposent d'avoir une table en base mais ce n'est pas mon cas...

 

Voici l'arbo de mon module

  • volume
    • controllers
      • admin
        • AdminVolume.php

      [*]config.xml

      [*]volume.php

 

Mon code :

 

->volume.php (j'arrive bien à afficher ce que je veux "à l'ancienne" dans la partie configuration du module):

<?php
if (!defined('_PS_VERSION_'))
 exit;

class Volume extends Module
{
public function __construct()
{
	$this->name = 'volume';
	$this->tab = 'export';
	$this->version = 1.0;
	$this->author = '72300 studio';
	$this->need_instance = 0;
	parent::__construct();
	$this->displayName = $this->l('Passerelle avec VOLUME');
	$this->description = $this->l('Contient les outils nécessaires pour lire/générer les fichiers d\'échanges avec l\'ERP VOLUME.');
}
public function install()
{

	$tab = new Tab();
	$tab->name = 'Passerelle VOLUME';
	$tab->module = 'volume';
	$tab->class_name = 'AdminVolume';
	$tab->id_parent = 18; // Root tab
	$tab->add();

	return parent::install();
}

public function getContent() {
	$output = 'text';
	return $output;

}

	  /**
 * Displays admin form
 * @return string
 */
public function displayForm()
{
	$output = 'text';
	return $output;
}

 

-> AdminVolume.php

class AdminVolumeController extends ModuleAdminController {

/**
 *
 * @var string type : le type de parser souhaité : IMPORT pour lire un fichier en provenance de VOLUME, EXPORT pour créer un fichier à destination de VOLUME
 */
var $type;

/**
 *
 * @var Array $profil : contient le tableau associatif qui indique comment lire/construire chaque ligne du fichier
 */
var $profil;




public function __construct() {

   // Manque?
	parent :: __construct();			  

}

 public function renderForm()
{
 $this->fields_form = array(
  'legend' => array(
'title' => $this->l('Zones'),
'image' => '../img/admin/world.gif'
  )
			);

		return parent::renderForm();
	}
}

 

Je ne vois pas comment compléter ce que j'ai... Il y a des assignation de table et de classe dans le constructeur controller, là ou j'ai écris "// manque ?", sur les exemples que j'ai trouvés.

 

Mais quoi mettre ou comment faire si l'on n'a pas de table liée et/ou de modèle?

 

Merci pour vos éclairages ;)

 

Nicolas

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

Bonjour et tout d'abord merci pour votre réponse rapide et cet exemple,

J'ai fait comme vous m'avez indiqué et malheureusement j'obtiens toujours ma page blanche (avec header et footer presta), bien qu'ayant ajouté du texte dans le form.tpl...

 

J'ai remarqué qu'il y a 2 répertoires views imbriqués? J'ai tenté avec un seul, mais ca n'a pas fonctionné non plus.

 

Une idée de la raison ? Peu-être que mon tab est mal instancié? Il apparait bien mais me confirmez-vous qu'il est correctement rempli?

 

Merci beaucoup du temps que vous passerez à me répondre,

 

Nicolas

Link to comment
Share on other sites

Encore une foisn merci pour ce retour !

J'ai à présent une page avec le titre de mon module et bien ce que j'ai mis dans la propriété fields_form de mon controleur. Cependant, lorsque j'ajoute du code dans le tpl, encore une fois rien ne s'affiche. J'ai trouvé un autre module (blockcms) qui définit lui aussi un formulaire d'amin et en tentant de reproduire, ca ne fonctionne toujours pas :

 

{extends file="helpers/form/form.tpl"}
{block name="input"}
		    <h3>test</h3>
 {$smarty.block.parent}				   
{/block}
{block name="script"}
$(document).ready(function() {

});
{/block}

 

Merci encore et désolé si ces questions vous paraissent triviales... Je trouve la documentation très disparate sur le sujet et j'ai du mal à retrouver mes petits.

 

Nicolas

Link to comment
Share on other sites

Après quelques heures de recherches, j'en suis au même point... Je me permets de joindre une archive de mon module dans l'état actuel des choses : si vous pouvez y jeter un oeil et le compléter de manière à ce qu'il affiche le form.tpl dans l'onglet que j'aurais configuré à cet effet, ce serait super !

 

Merci beaucoup d'avance de votre aide sur ce souci... Je suis vraiment étonné car entre ce tuto et celui-là (de Prestashop eux-mêmes) il y a un monde et ça ne colle pas... Seul celui de prestashop aborde l'admin tab, mais d'une manière qui me semble dépassée et différente de ce que MVC voudrait.

 

Bref, vos lumières sont une fois de plus les bienvenues !

 

Merci

 

Nicolas

 

volume.zip

Link to comment
Share on other sites

Bonjour à tous,

Un petit up pour mon sujet que je n'ai malheureusement pas encore résolu... :(.

 

De manière plus précise, je cherche à savoir pourquoi le form.tpl que j'ai défini dans mon module pour l'onglet d'admin n'est pas pris en override du form.tpl de base... Tous les tutos que j'ai pu trouvé montrent comment afficher des données liées à la base et proposer un CRUD dessus.

 

Mon objectif à moi est tout autre : je cherche à offrir à l'utilisateur la possibilité d'uploader des fichiers d'imports... Bien que j'édite le fichier form.tpl, rien n'y fait mon onglet reste toujours vide...

 

Je remercie éternellement :) toutes les personnes qui prendront 5 minutes pour ouvrir l'archive ci-dessus (dans le post d'avant)...

 

Merci !

 

Nicolas

Link to comment
Share on other sites

Non ce n'est pas idiot du tout ;) La répon,se est simple : l'objectif de ce module est de réaliser des imports/exports quasi journaliers. Fonctionnellement, ce n'est pas de la configuration du module dont il s'agit mais vraiment de son utilisation et de son objectif fonctionnel... Par ailleurs, il y aura bien de la configuration, mais j'ai déjà réussi à afficher ce que je souhaite.

 

J'essaie en outre de "tester" le MVC de l'admin autant que possible, d'où mon entêtement... ;).

 

Une idée sur le dysfonctionnement ?

 

Merci d'avance !

 

Nicolas

  • Like 1
Link to comment
Share on other sites

Salut Nicolas,

 

Je suis dans le même cas et comme toi pas moyen de trouver une réponse.

J'essaye tant bien que mal d'afficher quelque chose dans l'administration de mon module sans passer par la base de donnée.

J'ai vu quelque chose sur un fichier "content.tpl" qui serai l'affichage par defaut mais je ne sais pas ou le placer dans le module.

 

il y a aussi la fonction initContent(), mais je n'ai pas réussis à définir le template que je veux afficher.

 

Si jamais quelqu'un connait la réponse à notre problème !

 

Loïc

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...