Как использовать php сессии в xslt? - PullRequest
1 голос
/ 13 марта 2009

Как использовать php-сессии в XSLT, например, для создания корзины покупок для интернет-магазина?

Пользователь может просматривать сайт и нажимать «Добавить в корзину» на нескольких товарах. Каждый элемент должен быть сохранен в переменной сеанса. Пользователь может в любое время просмотреть выбранные товары, нажав «Просмотреть корзину».

Ответы [ 3 ]

3 голосов
/ 13 марта 2009

Если вы используете XSLT из PHP, вы можете передать ему параметры XSLTProcessor::setParameter(). Вам нужно объявить этот параметр в XSL с

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

Например ...

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 голосов
/ 06 мая 2014

Давно ответил, но для записи ...

Получите переменные сеанса напрямую из xsl:

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

Когда выполняете преобразование, вместо того, чтобы повторять преобразование, включите его:

$output_file = 'new_file.php';
$xslt->transformToUri( $xml_dom,  $output_file);
include ('new_file.php');
0 голосов
/ 13 марта 2009

вы, вероятно, вызываете процессор xslt для какого-то XML, почему бы вам просто не добавить данные сеанса в этот xml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...