2009-03-13 8 views
1

Comment utiliser des sessions php dans XSLT, par exemple pour créer un panier pour une boutique en ligne?Comment utiliser les sessions php dans xslt?

Un utilisateur peut parcourir le site et cliquer sur "Ajouter au panier" sur plusieurs articles. Chaque élément doit ensuite être stocké dans une variable de session. L'utilisateur peut à tout moment voir les articles sélectionnés en cliquant sur "Voir le panier".

+0

Etes-vous plus précis? Que voulez-vous exactement? Créer un panier est plutôt générique ... –

+0

Vraiment pas sûr de ce que vous essayez d'accomplir. Voulez-vous les données XML dans la session? (Pourquoi ferais-tu cela?) – strager

Répondre

3

Si vous utilisez XSLT depuis PHP, vous pouvez lui passer des paramètres par XSLTProcessor::setParameter(). Vous devez déclarer ce paramètre dans XSL avec

<xsl:param name="«param name»"/> 

Par exemple ...

PHP:

// $xsl, $xml -- DOMDocument objects 
$proc = new XSLTProcessor; 
$proc->importStyleSheet($xsl); 
$proc->setParameter(''/*default namespace*/, 'test_param', $aValue); 
$proc->setParameter('', 'session_name', session_name()); 
$proc->setParameter('', 'session_id', session_id()); 
echo $proc->transformToXML($xml); 

XSL:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="test_param"/> 
    <xsl:param name="session_name"/> 
    <xsl:param name="session_id"/> 
    <xsl:template match="/"> 
     <p>Your test parameter is: <xsl:value-of select="$test_param"/></p> 
     <p>Your session name is: <xsl:value-of select="$session_name"/></p> 
     <p>Your session ID is: <xsl:value-of select="$session_id"/></p> 
     <p> 
     <a> 
      <xsl:attribute name="href"> 
      <xsl:value-of select="concat('http://example.com/index.php?',$session_name,'=',$session_id)"/> 
      </xsl:attribute> 
      Link with session 
     </a> 
     </p> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Je vais essayer ça! Je vous remercie! – jorgen

0

vous appelez probablement le processeur xslt sur du XML, pourquoi ne pas simplement ajouter les données de session à ce xml?

0

Depuis longtemps répondu, mais pour le record ...

variables de session Obtenir directement à partir du xsl:

<xsl:text disable-output-escaping="yes">&lt;?php echo 'SESSION Name: ' . $_SESSION['session_name']; ?&gt;</xsl:text> 

Quand vous faites la transformation, au lieu de echo'ing la transformation, l'inclure:

$output_file = 'new_file.php'; 
$xslt->transformToUri($xml_dom, $output_file); 
include ('new_file.php'); 
Questions connexes