Использование GET и POST параметров в XSLT-шаблонах
Материал из Umicms
В 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 параметры получили переданные из формы значения, и они выводятся вместо значений по умолчанию. Остальные параметры не были приняты, поэтому получили пустое значение (определенное по умолчанию).
