2009-07-31 13 views
1

Dies muss einfach sein, aber ich kann keine Dokumentation online finden.Dynamische Links in Drupal

Ich versuche, die l() Funktion in Drupal zu verwenden, um eine dynamische Verbindung zu erstellen. Wie lautet die Syntax?

Im Moment habe ich:

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

die Punkte an:

path/%2Fcategory 

Antwort

3

vor allem, wenn Sie innerhalb einer Funktion arbeiten, müssen Sie Zugriff auf das globale Benutzerobjekt zu erhalten.

Zweitens, wenn der Benutzer anonym ist/sind nicht angemeldet, die $ user-> uid nicht eingestellt werden könnte oder 0 sein

schließlich um Fehler zu vermeiden, ist es üblich, Variablen verketten zusammen mit Streichern


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

Das war es (globaler Zugriff auf das Benutzerobjekt). Vielen Dank. – lazysoundsystem

0

Versuchen Sie, die Saiten statt verketten.
l('Destination',"path/".$user->uid."/category")

wie für die Dokumentation, hier ist sie: http://api.drupal.org/api/function/l/4.7

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

Danke für den Vorschlag, ich hatte das schon versucht, aber es gibt das gleiche Ergebnis. Es scheint, dass die l() - Funktion sich weigert, mit der Variablen umzugehen und den zweiten Schrägstrich zu umgehen. – lazysoundsystem

3

l() ist Ihre URL path/%2Fcategory Korrektur, weil es eine tragfähige Verbindung aus dem String path//category zu machen versucht.

Ihre Zeichenfolge ist path//category, weil $user->uid keinen Wert hat. Es hat keinen Wert, weil Sie entweder kein Benutzerobjekt von global $user oder user_load() abgerufen haben, oder Ihr Benutzer ist anonym.

ich den Wert von $ user setzen würde vorschlagen, zu prüfen, bevor l() zum Beispiel Aufruf:

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

Ja, das war das Problem, und es ist ein guter Rat. Vielen Dank. – lazysoundsystem

Verwandte Themen