2009-07-31 119 views
1

这一定很容易,但我无法在线找到它的文档。Drupal中的动态链接

我想在Drupal中使用l()函数来创建动态链接。语法是什么?

目前我有:

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

指向:

path/%2Fcategory 

回答

3

首先,如果你是一个函数内的工作,你需要获得进入全球用户对象。

其次,如果用户是匿名/没有登录,则$用户> UID可能没有设置或者是0

最后以避免错误,是很常见的用绳子

一起串联变量

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

就是这样(全局访问用户对象)。非常感谢。 – lazysoundsystem 2009-07-31 00:34:25

0

尝试串联字符串代替。
l('Destination',"path/".$user->uid."/category")

为文档,那就是:http://api.drupal.org/api/function/l/4.7

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

感谢您的建议,我已经尝试过,但它给出了相同的结果。看来l()函数都拒绝处理变量并转义第二个斜线。 – lazysoundsystem 2009-07-31 00:20:39

3

l()被修正您的网址path/%2Fcategory因为它试图使从字符串path//category一个可行的链接。

您的字符串为path//category,因为$user->uid没有任何价值。它没有任何价值,因为您没有从global $useruser_load()中拉出用户对象,或者您的用户是匿名用户。

我建议把检查$用户的价值呼唤l()之前,例如:

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

是的,这是问题所在,也是很好的建议。谢谢。 – lazysoundsystem 2009-07-31 08:55:41