2011-02-11 2 views
0

J'ai cette simple fonction PHP dans admin.phpSmarty insère la fonction PHP dans <BODY> au lieu de l'intérieur <TD>

function accountMenu() 
{ 
    if (isset($_SESSION['user_id'])) 
     { ?> 
     <a href="update_profile.php">Update My Profile</a><br> 
     <a href="update_email.php">Update My E-mail Address</a><br> 
     <a href="logout.php">Logout </a> 
    <?php } 
} 

J'assignez une variable à cette fonction dans dashboard.php

//smarty paths here 

include 'admin.php'; 

$accountMenu = accountMenu(); 

$smarty->assign('accountMenu', $accountMenu); 
$smarty->display('dashboard.tpl'); 

et essayer pour afficher cette via dashboard.tpl

<body> 
    <table width="100%" border="0" cellspacing="0" cellpadding="5" class="main"> 
     <tr> 
      <td width="160" valign="top"> 
      {$accountMenu} 
      </td> 
      <td width="732" valign="top"> 
       <h3>Dashboard</h3> 
      </td> 
     </tr> 

     <tr> 
      <td colspan="3">&nbsp;</td> 
     </tr> 
    </table> 
</body> 

ce qui se passe est que le accountMenu éléments sont affichés immédiatement après <BODY> (et même avant <TITLE>!) et pas dans le <TD>.

Une idée de pourquoi cela se passe-t-il?

+0

'$ smarty-> assign ('accountMenu', accountMIenu $)' Votre variable est nommé de manière incorrecte. –

+0

merci Russel - mais cette faute de frappe n'est pas dans le code original, juste corrigé le code ici sur SO – pepe

+0

alors juste pour être clair, le problème persiste - les éléments allant à CORPS au lieu de TD – pepe

Répondre

1

Votre fonction ne retourne rien - il affiche simplement directement le code HTML dans la mémoire tampon, alors quand vous appelez ceci:

$accountMenu = accountMenu(); 

Il imprime immédiatement le navigateur et accountMenu $ reste NULL.

changer afin qu'il retourne la chaîne désirée, par exemple:

function accountMenu() 
{ 
    if (isset($_SESSION['user_id'])) return ' 
     <a href="update_profile.php">Update My Profile</a><br> 
     <a href="update_email.php">Update My E-mail Address</a><br> 
     <a href="logout.php">Logout </a> 
    '; 
} 
+0

merci beaucoup - a parfaitement fonctionné! – pepe

Questions connexes