Forum CMS Made Simple FR

Version complète : [resolu]création d'un module function DoAction inopérante
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

rusey

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.2
#~ Url du site : http://127.0.0.1
#~ Hébergeur / Soft : wampserver
#~ Informations Système :
#~ #~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ #~ Version du CMS: #1.10.2
#~ #~ Url du site : http://121.0.0.1
#~ #~ Hébergeur / Soft : wampserver
#~ #~ Informations Système :
#~ #~ Cms Version : 1.10.2
#~ #~ Modules installés :
#~ #~ CMSMailer: 2.0.2
#~ #~ CMSPrinting: 1.0
#~ #~ FileManager: 1.2.0
#~ #~ MenuManager: 1.7.7
#~ #~ MicroTiny: 1.1.1
#~ #~ ModuleManager: 1.5.3
#~ #~ Nouvelles: 2.12.3
#~ #~ Recherche: 1.7
#~ #~ ThemeManager: 1.1.4
#~ #~ FormBuilder: 0.7
#~ #~ Skeleton: 1.8.1
#~ #~ Mysqlmanager: 1.2.5
#~ #~ Captcha: 0.4.5
#~ #~ CGExtensions: 1.27.1
#~ #~ NEM: 2.3.8
#~ #~ Informations de configuration :
#~ #~ php_memory_limit:
#~ #~ process_whole_template: faux
#~ #~ output_compression: faux
#~ #~ max_upload_size: 10000000
#~ #~ default_upload_permission: 664
#~ #~ url_rewriting: aucune
#~ #~ page_extension:
#~ #~ query_var: page
#~ #~ image_manipulation_prog: GD
#~ #~ auto_alias_content: vrai
#~ #~ localisation:
#~ #~ default_encoding: UTF-8
#~ #~ admin_encoding: UTF-8
#~ #~ set_names: vrai
#~ #~ Informations sur PHP :
#~ #~ phpversion: 5.3.5
#~ #~ md5_function: Le (Vrai)
#~ #~ gd_version: 2
#~ #~ tempnam_function: Le (Vrai)
#~ #~ magic_quotes_runtime: Désactivé (Faux)
#~ #~ E_STRICT: 0
#~ #~ E_DEPRECATED: 0
#~ #~ memory_limit: 128M
#~ #~ max_execution_time: 60
#~ #~ output_buffering: 1
#~ #~ safe_mode: Désactivé (Faux)
#~ #~ file_uploads: Le (Vrai)
#~ #~ post_max_size: 10M
#~ #~ upload_max_filesize: 10M
#~ #~ session_save_path: c: / wamp / tmp (0777)
#~ #~ session_use_cookies: Le (Vrai)
#~ #~ xml_function: Le (Vrai)
#~ #~ Informations sur le serveur :
#~ #~ Server API: apache2handler
#~ #~ DServer Type: MySQL (MySQL)
#~ #~ DServer Version: 5.5.8
#~ #~ ----------------------------------------------
#~ #~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Je suis en train de créer mon premier module en suivant les indications du tutoriel :
http://wiki.cmsmadesimple.org/index.php/...e_Tutorial.
la phase de création du module c'est correctement déroulée et j'ai pu ainsi charger avec PhpMyAdmin 77 articles dans la table crée : "cms_module_catlist_products"
J'ai adapté comme c'est indiqué la fonction DoAction :

function DoAction($action, $id, $params, $returnid=-1)
{
if ($action == 'default')
{
$db =& $this->GetDb();
$sql = 'SELECT * FROM ' . cms_db_prefix().'module_catlist_products;';

$dbresult =& $db->Execute($sql);

$list = "<br /><br />\n";
$list .= "<ul>\n";
while ($dbresult && $row = $dbresult->FetchRow())
{
$list .= "<li><b>".$row['cata_categorie']." : ". $row['cata_materiel'] ." ". $row['cata_marque']." ". $row['cata_model'] .'</b><br />';
$list .= ''. '<br />';
$list .= "</li>\n";
}
$list .= "</ul>\n";
$list .= "<br /><br />\n";
}
// assign to Smarty

global $gCms;
$this->smarty->assign('list', $list);

/**
*Insert: {cms_module module='Catlist'}{$list}
*in your page template
*But there has to be a way for this to work without the {$list} tag...
**/
return;
}
} //end class


Voici mon problème:
et j'ai essayé de faire retourner cette fonction dans une page dans le contenu en l'appelant comme c'est indiqué par
{cms_module module='Catlist'}{$list} sans résutat;
puis même chose en modifiant le "return" de la fonction par "return $liste;" sans résutat
puis en appelant la fonction sans {$list} seulement par {cms_module module='Catlist'} sans résutat
puis j'ai vidé la fonction de toute condition et substance pour lui faire retourner un $list='hello world' toujours sans résultat

merci de m'aider à sortir de cette impasse.
bonjour,
je viens de relire rapidement le tuto et il n'est pas à jour pour la version 1.10.x. A la place de
Code :
[== PHP ==]
global $gCms;
$this->smarty->assign('list', $list);
essaie :
Code :
[== PHP ==]
$gCms = cmsms();
$smarty = $gCms->GetSmarty();
$this->$smarty->assign('list', $list);
ou
$this->cmsms()->GetSmarty()->assign('list', $list);
Nota : C'est mieux de garder la variable $smarty pour un usage ultérieur.

rusey

Bonjour jissey

Merci pour ta réponse.
J'ai suivi tes indications
en remplaçant :
global $gCms;
$this->smarty->assign('list', $list);

par :
$gCms = cmsms();
$smarty = $gCms->GetSmarty();
$this->$smarty->assign('list',$list);
sans résultat.

puis par :
$this->cmsms()->GetSmarty()->assign('list', $list);
et le problème reste entier.
cette correction est sans doute nécessaire mais pas suffisante pour me sortir de mon impasse. :/
re,
et tu n'as aucun messages d'erreur?
Je n'ai pas fait ce tuto et je n'en ai pas le temps mais :
1- remonte l'initialisation de $gCms = cmsms(); au début juste avant $db =& $this->GetDb();
2- remplace $db =& $this->GetDb(); par $db = $gCms->GetDb();
3- dans le fichier de config, modifie la variable $config['debug']=false/true
4- affiche la page et recherche la requête sql qui doit être exécutée (recherche ça =>module_catlist_products).

il doit y avoir un message d'erreur.
retire ton code doAction(...){...} de ton fichier et opte plutôt pour créer un fichier nommé action.default.php qui contiendra ce code :

Code :
<?php

$gCms = cmsms();

if (!isset($gCms)) exit;

     $db = $gCms->GetDb();
     $sql = 'SELECT * FROM ' . cms_db_prefix().'module_catlist_products;';

    $dbresult =& $db->Execute($sql);
    
     $list = "<br /><br />\n";
     $list .= "<ul>\n";
     while ($dbresult && $row = $dbresult->FetchRow())    
     {
     $list .= "<li><b>".$row['cata_categorie']." : ". $row['cata_materiel'] ."  ". $row['cata_marque']."  ". $row['cata_model'] .'</b><br />';
     $list .= ''. '<br />';
     $list .= "</li>\n";
    }
     $list .= "</ul>\n";
     $list .= "<br /><br />\n";
   }
   // assign to Smarty
  
   $smarty = $gCms->GetSmarty();
   $smarty->assign('list', $list);
  
   /**
    *Insert: {cms_module module='Catlist'}{$list}
    *in your page template
    *But there has to be a way for this to work without the {$list} tag...
    **/
   return;

?>

réduire le fichier principal ton module est la méthode préconisée depuis 2011. Le tuto que tu suis est obsolète. Préfère les tutos dispo sur wiki.cmsmadesimple.fr (pas tous présent, mais plus récents)

Si ton module ne fonctionne toujours pas après ces modifications (+ étude des erreurs de ta part) : tu me le zip et tu me l'envoie par email sur contact @ cmsmadesimple point fr je regarderais de plus prêt cette histoire

rusey

Merci à vous deux

tout fonctionne,
pour l'affichage des messages d'erreur j'ai eu droit à toutes les erreurs de pleins de modules que j'ai installé sans les utiliser j'ai donc renoncé à poursuivre mes recherches dans ce sens.

Du coup je me suis rabattu sur le solution de bess et cela fonctionne super je vais fermer le sujet