PHP / XSLT несколько экземпляров одной строки запроса - PullRequest
0 голосов
/ 04 февраля 2010

Мой бэкэнд принимает значения идентификатора с разделителями-запятыми "11,12,13". На переднем крае у меня есть контрольный список, который позволяет многократный выбор и публикует следующее.

someurl.com? ID = 11 & ID = 12 & ID = 13

Как использовать $ _GET для нескольких экземпляров идентификатора, отформатировать его в строку с разделителями-запятыми? Или, в качестве альтернативы, есть ли лучший способ заставить контрольные списки отправлять форму в нужном мне формате?

Теперь вернемся к интерфейсу. Я использую XSLT, чтобы определить, нужно ли проверять элемент, чтобы запомнить его предыдущее состояние.

    <xsl:choose>
    <xsl:when test="$id = *">
        <option selected="selected">
            <xsl:value-of select="*"/>
        </option>
    </xsl:when>
    <xsl:otherwise>
        <option>
            <xsl:value-of select="*"/>
        </option>
    </xsl:otherwise>
</xsl:choose>

Это нормально, когда выбран только один вариант, но с кратными, как бы вы обрабатывали несколько экземпляров этого значения $ id в URL?

Любая помощь и решения очень ценны.

1 Ответ

1 голос
/ 04 февраля 2010

Я не очень часто использую php, но я считаю, что вы хотите, чтобы ?id[]=11&id[]=12&id[]=13 получил массив [11,12,13] в параметре id.

Боюсь, что описание проблемы xslt слишком краткое для меня, чтобы понять. Прежде всего, я не понимаю, почему вы хотите установить атрибут selected во внешнем интерфейсе. Тогда я бы предложил DRY:

<option>
  <xsl:if test='...'>
    <xsl:attribute name='selected' value='"selected"'/>
  </xsl:if>
  <xsl:value-of select='*'/>
</option>

Что касается самого теста, что вы получаете от сервера, когда выбираете несколько элементов так, как понимает сервер? Был бы простой

<xsl:if test="contains(concat(',', $ids, ','), concat(',', *, ','))">

работа

...