2009-03-13 9 views
1

Wie verwende ich PHP-Sessions in XSLT, um beispielsweise einen Einkaufswagen für einen Webshop zu erstellen?Wie verwendet man PHP-Sitzungen in xslt?

Ein Benutzer kann die Website durchsuchen und auf "In den Einkaufswagen" klicken. Jedes Element sollte dann in einer Sitzungsvariablen gespeichert werden. Der Benutzer kann jederzeit die ausgewählten Artikel anzeigen, indem er auf "Einkaufswagen anzeigen" klickt.

+0

Können Sie genauer sein? Was genau willst du erreichen? Das Erstellen eines Einkaufswagens ist eher generisch ... –

+0

Ganz unsicher, was Sie erreichen wollen. Möchten Sie die XML-Daten in der Sitzung? (Warum würdest du das tun?) – strager

Antwort

3

Wenn Sie XSLT innerhalb von PHP verwenden, können Sie Parameter durch übergeben. Sie werden feststellen, dass Parameter in XSL mit

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

Zum Beispiel erklären müssen ...

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

Ich werde das versuchen! Vielen Dank! – jorgen

0

Sie wahrscheinlich sind telefonieren der XSLT-Prozessor auf einigen XML, warum fügen Sie nicht einfach die Sitzungsdaten zu diesem XML?

0

Lange beantwortet, da aber der Ordnung halber ...

Get Session-Variablen direkt aus dem xsl:

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

Wenn die Transformation zu tun, sondern die Umwandlung von echo'ing, sind es:

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