2009-07-31 8 views
1

Cela doit être facile, mais je ne trouve pas de documentation pour cela en ligne. J'essaie d'utiliser la fonction l() dans Drupal pour créer un lien dynamique. Quelle est la syntaxe?Liens dynamiques dans Drupal

Au moment j'ai:

l('Destination',"path/$user->uid/category") 

qui pointe vers:

path/%2Fcategory 

Répondre

3

d'abord, si vous travaillez dans une fonction, vous aurez besoin d'avoir accès à l'objet global de l'utilisateur.

En second lieu, si l'utilisateur est anonyme/non connecté, le $ user-> uid pourrait ne pas être réglé ou 0.

enfin pour éviter les erreurs, il est courant de concaténer les variables ainsi que des chaînes


global $user; 
if ($user->uid) 
{ 
    l('Destination', 'path/'.$user->uid.'/category') 
} 
+0

Voilà (accès global à l'objet utilisateur). Merci beaucoup. – lazysoundsystem

0

Essayez concaténer les chaînes à la place.
l('Destination',"path/".$user->uid."/category")

que pour la documentation, la voici: http://api.drupal.org/api/function/l/4.7

l($text, 
    $path, 
    $attributes = array(), 
    $query = NULL, 
    $fragment = NULL, 
    $absolute = FALSE, 
    $html = FALSE)
+0

Merci pour la suggestion, je l'avais déjà essayé, mais cela donne le même résultat. Il semble que la fonction l() refuse à la fois de traiter la variable et d'échapper à la seconde barre oblique. – lazysoundsystem

3

l() corrige votre URL à path/%2Fcategory parce qu'il essaie de faire un lien pratique de la chaîne path//category. La chaîne est path//category car $user->uid n'a aucune valeur. Il n'a aucune valeur, car vous n'avez pas trouvé d'objet utilisateur depuis global $user ou user_load(), ou votre utilisateur est anonyme.

Je suggère de mettre vérifier la valeur de l'utilisateur $ avant d'appeler l(), par exemple:

global $user; // or $user = user_load($foo); 
if ($user) { 
l('Destination', 'path/'.$user->uid.'/category'); 
} else { 
l('Destination', 'path/you-are-not-logged-in'); 
} 
+0

Oui, c'était le problème, et c'est un bon conseil. Merci. – lazysoundsystem

Questions connexes