2009-07-31 2 views
1

これは簡単なものでなければなりませんが、オンラインでのマニュアルは見つかりません。Drupalの動的リンク

私はDrupalでl()関数を使用して動的リンクを作成しようとしています。構文は何ですか?

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

を指す:

path/%2Fcategory 

答えて

3

まず、あなたがグローバルなユーザーオブジェクトへのアクセスを取得する必要があります。

エラーを防止するためにユーザーがログインしていない/匿名であれば第二に、する$ user-> uidが設定されていない可能性がありますか、最後に0

こと、文字列

と一緒に変数を連結するのが一般的です文字列 path//categoryから実行可能なリンクを作成しようとしているので、

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

それはそれでした(ユーザーオブジェクトへのグローバルアクセス)。どうもありがとう。 – lazysoundsystem

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()関数は変数を扱うことを拒否し、2番目のスラッシュをエスケープしているようです。 – lazysoundsystem

3

l()path/%2FcategoryにあなたのURLを修正しています。

$user->uidに値がないため、文字列はpath//categoryです。ユーザーオブジェクトをglobal $userまたはuser_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

関連する問題