Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Utilisation de createlink
#2

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 Smile

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 Wink

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 Smile

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 Wink

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";
}
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)