Использование GET и POST параметров в XSLT-шаблонах — различия между версиями
Sdarks (обсуждение | вклад) |
Whoa (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
[[category:Верстка в XSLT]] | [[category:Верстка в XSLT]] | ||
− | '''Актуально для версии 18 | + | '''Актуально для версии 18.''' |
В UMI.CMS предусмотрена возможность использования GET и POST параметров в XSLT-шаблонах. Для этого их необходимо инициализировать как глобальные параметры в шаблоне при помощи инструкции <xsl:param> (после инструкции <xsl:output>, на одном уровне c <xsl:template>). | В UMI.CMS предусмотрена возможность использования GET и POST параметров в XSLT-шаблонах. Для этого их необходимо инициализировать как глобальные параметры в шаблоне при помощи инструкции <xsl:param> (после инструкции <xsl:output>, на одном уровне c <xsl:template>). |
Текущая версия на 10:30, 1 июня 2018
Актуально для версии 18.
В UMI.CMS предусмотрена возможность использования GET и POST параметров в XSLT-шаблонах. Для этого их необходимо инициализировать как глобальные параметры в шаблоне при помощи инструкции <xsl:param> (после инструкции <xsl:output>, на одном уровне c <xsl:template>).
В отличие от серверных переменных (см. Использование серверных переменных в XSLT-шаблонах) они инициализируются тем же именем, за исключением многомерных массивов, в которых символы "[" и "]" должны быть заменены на "." (точка).
Например, если создать следующий шаблон:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
<xsl:param name="get_param1" />
<xsl:param name="get_param2" />
<xsl:param name="get_param3" />
<xsl:param name="post_param1" select="10"/>
<xsl:param name="post_param2" select="11"/>
<xsl:param name="post_param3" select="12"/>
<xsl:param name="data.new.price"/>
<!-- main template -->
<xsl:template match="/">
<html>
<head></head>
<body>
<ul>
<li>$get_param1: <xsl:value-of select="$get_param1" /></li>
<li>$get_param2: <xsl:value-of select="$get_param2" /></li>
<li>$get_param3: <xsl:value-of select="$get_param3" /></li>
<li>$post_param1: <xsl:value-of select="$post_param1" /></li>
<li>$post_param2: <xsl:value-of select="$post_param2" /></li>
<li>$post_param3: <xsl:value-of select="$post_param3" /></li>
<li>$data.new.price: <xsl:value-of select="$data.new.price" /></li>
</ul>
<form method="post" action="/about/">
<input type="text" name="post_param1" value="21"/>
<input type="text" name="post_param2" value="22"/>
<input type="text" name="post_param3" value="23"/>
<input type="submit" value="send"/>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
И назначить его для страниц сайта, то при запросе вида http://адрес_сайта/?get_param1=10&get_param2=11&get_param3=12&data[new][price]=1200 мы увидим следующее:
* $get_param1: 10
* $get_param2: 11
* $get_param3: 12
* $post_param1: 10
* $post_param2: 11
* $post_param3: 12
* $data.new.price: 1200
... здесь будет форма ...
Обратите внимание, что в шаблон не было передано POST параметров, однако мы указали им значение по умолчанию, которое и вывелось в итоге.
Если теперь отправить форму, то произойдет переход на страницу http://адрес_сайта/about/ (допустим она тоже выводится по этому же шаблону), и в браузере мы увидим уже следующее:
* $get_param1:
* $get_param2:
* $get_param3:
* $post_param1: 21
* $post_param2: 22
* $post_param3: 23
* $data.new.price:
... здесь будет форма ...
Как можно видеть в этом случае POST параметры получили переданные из формы значения, и они выводятся вместо значений по умолчанию. Остальные параметры не были приняты, поэтому получили пустое значение (определенное по умолчанию).