13/09/2010, 22:34:31
salut versus68
la doc qui va t'être une bible : l'api de cmsms, et + précisement la doc de cette fonction : http://www.cmsmadesimple.org/api/class_c...1fa01564a5
ajoute la en marque page
concrètement pour toi, a chaque fois que ton module a une page appelée depuis l'interface admin ou l'interface utilisateur, cmsms initialise certaines variables qui sont dès lors utilisables sans être re-déclarées dans ton code
une liste non exhaustive :
$id : l'identifiant unique représentant ton module
$params : tous les paramètres GET et POST issus de formulaire précédent l'appel de ta page
$returnid : l'id de la page appelée (et non appelante !)
$this : ton module, qui extends au passage la classe CmsModule et bénéficie donc des fonctions de celle ci, ce qui explique comment on peut faire appel à $this->CreateLink
voilà déjà dans un premier temps. Maintenant ta fonction : d'après la doc on sait que
concernant le code que tu as écrit on s'appercoit que ca colle pas des masses
le premier paramètre est l'ID de ton module : prend l'habitude d'y insérer $id, on le connais, il n'a pas lieu de le définir à la mano ! Le seul cas ou tu devras spécifier à la main quelque chose sera le jour ou ton lien pointe vers un autre module, autant dire que ca va pas se faire dans la semaine
ce code suppose donc que le lien appel la page php : action.displayItem.php, rien de sorcier à ce niveau. Si tu veux rester sur la même page, retient que pour la page par défaut de l'admin c'est "defaultadmin" et que pour la page par défaut côté front office c'est "default" qu'il faudra mettre
ce petit paramètre étant l'ID de ta page actuelle, elle sera utilisé pour être transmis à la page suivante et ainsi faire un retour arrière si besoin vers notre page actuelle.
le contenu affiché dans le lien : ici le contenu du tableau $row ayant la clé 'name', rien de complexe
un tableau de paramètre, ici tu lui dit que le contenu du tableau $row ayant la clé 'id' sera passé en paramètre dans le lien du type action.displayItem.php?itemid=xxxx
Concernant ton second pb de paramètre pas passé, je ne sais pas quoi te dire : normalement ca devrait passer... par contre je suis étonné que tu utilises
j'imagine donc que ton erreur est de mettre ce code dans la même page que là ou tu as coder le reste alors qu'il devrait se trouver dans la page action.displayItem.php, et je dirais même plus qu'il ne devrait pas exister
le code de action.displayItem.php devrait simplement se résumer à ceci
en bon codeur tu ferras également attention à quelques subtilités d'ordre sécu :
la doc qui va t'être une bible : l'api de cmsms, et + précisement la doc de cette fonction : http://www.cmsmadesimple.org/api/class_c...1fa01564a5
ajoute la en marque page
concrètement pour toi, a chaque fois que ton module a une page appelée depuis l'interface admin ou l'interface utilisateur, cmsms initialise certaines variables qui sont dès lors utilisables sans être re-déclarées dans ton code
une liste non exhaustive :
$id : l'identifiant unique représentant ton module
$params : tous les paramètres GET et POST issus de formulaire précédent l'appel de ta page
$returnid : l'id de la page appelée (et non appelante !)
$this : ton module, qui extends au passage la classe CmsModule et bénéficie donc des fonctions de celle ci, ce qui explique comment on peut faire appel à $this->CreateLink
voilà déjà dans un premier temps. Maintenant ta fonction : d'après la doc on sait que
Code :
CmsModule::CreateLink ( $ id,
$ action,
$ returnid = '',
$ contents = '',
$ params = array(),
$ warn_message = '',
$ onlyhref = false,
$ inline = false,
$ addttext = '',
$ targetcontentonly = false,
$ prettyurl = ''
)
Returns the xhtml equivalent of an href link This is basically a nice little wrapper to make sure that id's are placed in names and also that it's xhtml compliant.
Parameters:
string The id given to the module on execution
string The action that this form should do when the link is clicked
string The id to eventually return to when the module is finished it's task
string The text that will have to be clicked to follow the link
string An array of params that should be inlucded in the URL of the link. These should be in a $key=>$value format.
string Text to display in a javascript warning box. If they click no, the link is not followed by the browser.
boolean A flag to determine if only the href section should be returned
boolean A flag to determine if actions should be handled inline (no moduleinterface.php -- only works for frontend)
string Any additional text that should be added into the tag when rendered
concernant le code que tu as écrit on s'appercoit que ca colle pas des masses
Citation :$this->CreateLink('cntnt01', 'displayItem', $returnid, $row['name'],array('itemid' => $row['id']));
le premier paramètre est l'ID de ton module : prend l'habitude d'y insérer $id, on le connais, il n'a pas lieu de le définir à la mano ! Le seul cas ou tu devras spécifier à la main quelque chose sera le jour ou ton lien pointe vers un autre module, autant dire que ca va pas se faire dans la semaine
Citation :$this->CreateLink($id, 'displayItem', $returnid, $row['name'],array('itemid' => $row['id']));
ce code suppose donc que le lien appel la page php : action.displayItem.php, rien de sorcier à ce niveau. Si tu veux rester sur la même page, retient que pour la page par défaut de l'admin c'est "defaultadmin" et que pour la page par défaut côté front office c'est "default" qu'il faudra mettre
Citation :$this->CreateLink($id, 'displayItem', $returnid, $row['name'],array('itemid' => $row['id']));
ce petit paramètre étant l'ID de ta page actuelle, elle sera utilisé pour être transmis à la page suivante et ainsi faire un retour arrière si besoin vers notre page actuelle.
Citation :$this->CreateLink($id, 'displayItem', $returnid, $row['name'],array('itemid' => $row['id']));
le contenu affiché dans le lien : ici le contenu du tableau $row ayant la clé 'name', rien de complexe
Citation :$this->CreateLink($id, 'displayItem', $returnid,$row['name'], array('itemid' => $row['id']));
un tableau de paramètre, ici tu lui dit que le contenu du tableau $row ayant la clé 'id' sera passé en paramètre dans le lien du type action.displayItem.php?itemid=xxxx
Concernant ton second pb de paramètre pas passé, je ne sais pas quoi te dire : normalement ca devrait passer... par contre je suis étonné que tu utilises
Code :
if($action == 'displayItem')
j'imagine donc que ton erreur est de mettre ce code dans la même page que là ou tu as coder le reste alors qu'il devrait se trouver dans la page action.displayItem.php, et je dirais même plus qu'il ne devrait pas exister
le code de action.displayItem.php devrait simplement se résumer à ceci
Code :
echo "on passe évidement bien là";
if (isset($params['itemid']){
echo "et on va passer par ici aussi";
}
en bon codeur tu ferras également attention à quelques subtilités d'ordre sécu :
Code :
//Si la page est appelée de l'extérieur et que
// cmsms n'a rien initialisé : c'est un hack !
if (!isset($gCms)) exit;
// Éventuelle vérification de la permission
if (! $this->CheckPermission('Le nom de ma permission'))
return $this->DisplayErrorPage($id, $params, $returnid,$this->Lang('accessdenied'));
//A partir d'ici c'est sécure :)
echo "on passe évidement bien là";
if (isset($params['itemid']){
echo "et on va passer par ici aussi";
}