Экранирование "-" в &where

Всем привет!

У меня такой вопрос
Есть вывод ресурсов
[[pdoResources?
	&parents=`[[++locations_plans]]`
        &tpl=`@INLINE <a href="[[+alias]]">[[+menutitle]]</a>`
        &tvPrefix=``
        &where=`{"city:=":"Санкт–Петербург","template:=":3}`
        &includeTVs=`city`
]]
так вот в &where
«city:=»:«Санкт–Петербург»

В Санкт-Петербург приходится использовать "–" (среднее тире), если там ставить "-" (минус) то ничего не работает.

Как научить where корректно обрабатывать знак минус?
Заэкранировать его как-то или что?
Евгений
06 августа 2020, 02:44
modx.pro
649
0

Комментарии: 7

Сергей
07 августа 2020, 21:59
0
Не знаю, поможет или нет, но возможно стоит создать ключ в «Панели администрирования конфигурации» что-то типа
&where=`{"city:=":"[[++тут ключ]]","template:=":3}`
или пробовать с помощью лексикона подтянуть.
    Евгений
    10 августа 2020, 00:49
    0
    К сожелению не помогло
    Не ключ, не лексикон
    Николай Савин
    10 августа 2020, 13:30
    0
    А зачем вы пишите вот так
    "city:=":"Санкт–Петербург"
    Правильно будет вот так
    "city":"Санкт–Петербург"
    Если вы ищите точное значение то := писать излишне. Оператор двоеточия нужен в более сложных записях.

    По существу вопроса. В самой записи ничего криминального нет. Должно работать. Давайте разбираться.

    Что значит не работает с дефисом? Не находит ничего или выбрасывает ошибку?
    Если ошибку то какую? В Журнале ошибок MODX я имею ввиду.
    В объекте по которому ищите у вас Санкт-Петербург как сохранен? С дефисом? С Тире?
      Евгений
      10 августа 2020, 15:59
      0
      // Что значит не работает с дефисом? Не находит ничего или выбрасывает ошибку?
      Ничего не находит

      // Если ошибку то какую? В Журнале ошибок MODX я имею ввиду.
      Ошибок нет, просто ничего не выводит

      // В объекте по которому ищите у вас Санкт-Петербург как сохранен? С дефисом? С Тире?
      Для экспериментов, в объекте по которому ищу, данные сохранены и с "–" (среднее тире) и с "-" (минус)
      И делаю два вывода (тоже для эксперимента) «city»:«Санкт–Петербург» и «city»:«Санкт-Петербург»
      Первый выводит то что должен, второй нафиньг ¯\_(ツ)_/¯
        Aborrol
        11 августа 2020, 03:15
        0
        В showlog какой запрос получается?
          Евгений
          11 августа 2020, 22:48
          0
          Вот такое вижу

          0.0000350: PDOTOOLS LOADED
          0.0000110: XPDO QUERY OBJECT CREATED
          0.0002089: INCLUDED LIST OF TVS: CITY
          0.0000999: LEFTJOINED MODTEMPLATEVARRESOURCE AS TVCITY
          0.0000741: ADDED SELECTION OF MODRESOURCE: `ID`, `TYPE`, `CONTENTTYPE`, `PAGETITLE`, `LONGTITLE`, `DESCRIPTION`, `ALIAS`, `ALIAS_VISIBLE`, `LINK_ATTRIBUTES`, `PUBLISHED`, `PUB_DATE`, `UNPUB_DATE`, `PARENT`, `ISFOLDER`, `INTROTEXT`, `RICHTEXT`, `TEMPLATE`, `MENUINDEX`, `SEARCHABLE`, `CACHEABLE`, `CREATEDBY`, `CREATEDON`, `EDITEDBY`, `EDITEDON`, `DELETED`, `DELETEDON`, `DELETEDBY`, `PUBLISHEDON`, `PUBLISHEDBY`, `MENUTITLE`, `DONTHIT`, `PRIVATEWEB`, `PRIVATEMGR`, `CONTENT_DISPO`, `HIDEMENU`, `CLASS_KEY`, `CONTEXT_KEY`, `CONTENT_TYPE`, `URI`, `URI_OVERRIDE`, `HIDE_CHILDREN_IN_TREE`, `SHOW_IN_TREE`, `PROPERTIES`
          0.0000041: ADDED SELECTION OF MODTEMPLATEVARRESOURCE: IFNULL(`VALUE`, 'САНКТ-ПЕТЕРБУРГ') AS `CITY`
          0.0000050: REPLACED TV CONDITIONS
          0.0000119: PROCESSED ADDITIONAL CONDITIONS
          0.0001130: ADDED WHERE CONDITION: `TVCITY`.`VALUE`:IN(САНКТ-ПЕТЕРБУРГ), TEMPLATE:IN(3), MODRESOURCE.PARENT:IN(4), MODRESOURCE.PUBLISHED=1, MODRESOURCE.DELETED=0
          0.0000021: REPLACED TV CONDITIONS
          0.0000331: SORTED BY MODRESOURCE.MENUINDEX, ASC
          0.0000010: LIMITED TO 10, OFFSET 0
          0.0001111: SQL PREPARED «SELECT `MODRESOURCE`.`ID`, `MODRESOURCE`.`TYPE`, `MODRESOURCE`.`CONTENTTYPE`, `MODRESOURCE`.`PAGETITLE`, `MODRESOURCE`.`LONGTITLE`, `MODRESOURCE`.`DESCRIPTION`, `MODRESOURCE`.`ALIAS`, `MODRESOURCE`.`ALIAS_VISIBLE`, `MODRESOURCE`.`LINK_ATTRIBUTES`, `MODRESOURCE`.`PUBLISHED`, `MODRESOURCE`.`PUB_DATE`, `MODRESOURCE`.`UNPUB_DATE`, `MODRESOURCE`.`PARENT`, `MODRESOURCE`.`ISFOLDER`, `MODRESOURCE`.`INTROTEXT`, `MODRESOURCE`.`RICHTEXT`, `MODRESOURCE`.`TEMPLATE`, `MODRESOURCE`.`MENUINDEX`, `MODRESOURCE`.`SEARCHABLE`, `MODRESOURCE`.`CACHEABLE`, `MODRESOURCE`.`CREATEDBY`, `MODRESOURCE`.`CREATEDON`, `MODRESOURCE`.`EDITEDBY`, `MODRESOURCE`.`EDITEDON`, `MODRESOURCE`.`DELETED`, `MODRESOURCE`.`DELETEDON`, `MODRESOURCE`.`DELETEDBY`, `MODRESOURCE`.`PUBLISHEDON`, `MODRESOURCE`.`PUBLISHEDBY`, `MODRESOURCE`.`MENUTITLE`, `MODRESOURCE`.`DONTHIT`, `MODRESOURCE`.`PRIVATEWEB`, `MODRESOURCE`.`PRIVATEMGR`, `MODRESOURCE`.`CONTENT_DISPO`, `MODRESOURCE`.`HIDEMENU`, `MODRESOURCE`.`CLASS_KEY`, `MODRESOURCE`.`CONTEXT_KEY`, `MODRESOURCE`.`CONTENT_TYPE`, `MODRESOURCE`.`URI`, `MODRESOURCE`.`URI_OVERRIDE`, `MODRESOURCE`.`HIDE_CHILDREN_IN_TREE`, `MODRESOURCE`.`SHOW_IN_TREE`, `MODRESOURCE`.`PROPERTIES`, IFNULL(`TVCITY`.`VALUE`, 'САНКТ-ПЕТЕРБУРГ') AS `CITY` FROM `GRU234_SITE_CONTENT` AS `MODRESOURCE` LEFT JOIN `GRU234_SITE_TMPLVAR_CONTENTVALUES` `TVCITY` ON `TVCITY`.`CONTENTID` = `MODRESOURCE`.`ID` AND `TVCITY`.`TMPLVARID` = 33 WHERE ( `TVCITY`.`VALUE` IN ('САНКТ-ПЕТЕРБУРГ') AND `MODRESOURCE`.`TEMPLATE` IN (3) AND `MODRESOURCE`.`PARENT` IN (4) AND `MODRESOURCE`.`PUBLISHED` = 1 AND `MODRESOURCE`.`DELETED` = 0 ) ORDER BY MODRESOURCE.MENUINDEX ASC LIMIT 10 „
          0.0004122: SQL EXECUTED
          0.0000060: ROWS FETCHED
          0.0000072: PREPARED AND PROCESSED TVS
          0.0000010: RETURNING PROCESSED CHUNKS
          0.0011742: TOTAL TIME
          4 194 304: MEMORY USAGE
      Евгений
      19 августа 2020, 11:20
      0
      В итоге всё заработало
      Скорее всего проблема была в значениях по умолчанию которые подставлялись в это поле
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7