pdoResourses условие where странно работает
Имеется очень странная ошибка.
Есть такой снипет:
Есть кнопка, которая аяксом обрабатывает этот снипет.
Вот js код:
Постом я передаю два инпута, которые задаются слайдерами.
С данными инпутами все в порядке, я проверял.
В принципе все работает, если мы задаем площадь больше 100, стоит мне только выбрать площадь меньшую 100, как проверка «Common-square:<=»:"[[!#POST.square]]" перестает работать.
Ума не приложу, в чем дело.
Ссылка на страницу.
UPD: Как выяснилось, я сравнивал строку с числом, что не могло работать корректно, встал новый вопрос, как привести значения TV к числу.
Я решил написать простой сниппет, назвал его strToInt с таким кодом:
Такая запись не работает:
Обе части (тв common-square и переданное Постом)удалось привести к int
Вот код сниппета:
Есть такой снипет:
[[!pdoResources?
&parents=`15`
&depth=`0`
&tpl=`tpl_house_page`
&includeTVs=`people, main-pic, 1st-floor-square, 2nd-floor-square, Balkon-square, Common-square, Terassa-square`
&where=`{
"Common-square:<=":"[[!#POST.square]]",
"AND:people:>=":"[[!#POST.people_count]]"
}`
&showLog=`0`
]]
Есть кнопка, которая аяксом обрабатывает этот снипет.
Вот js код:
var
$people_range = $("#people-range"),
$square_range = $("#square-range"),
$show_button = $("a.filter-houses"),
$output = $(".projects ul"),
var $people = $people_range.val();
$show_button.click(function(event) {
$people = $people_range.val();
$.post("http://sandbox.maximshadrin.ru/dom/ajax.html",{
people_count: $people.charAt(0),
square: $square_range.val()
},
function(data){
console.log(data.length);
$output.empty();
if ( data.length !== 2 ){
$output.append(data);
}else{
$output.append("<p>Нет домов с такими параметрами</p>");
}
}
);
event.preventDefault();
});
Постом я передаю два инпута, которые задаются слайдерами.
С данными инпутами все в порядке, я проверял.
В принципе все работает, если мы задаем площадь больше 100, стоит мне только выбрать площадь меньшую 100, как проверка «Common-square:<=»:"[[!#POST.square]]" перестает работать.
Ума не приложу, в чем дело.
Ссылка на страницу.
UPD: Как выяснилось, я сравнивал строку с числом, что не могло работать корректно, встал новый вопрос, как привести значения TV к числу.
Я решил написать простой сниппет, назвал его strToInt с таким кодом:
<?php
return (int)$input;
?>
Вопрос, как теперь использовать этот сниппет в условии &where?Такая запись не работает:
&where=`{
"[[!strToInt? &input=Common-square]]:<=":"[[!#POST.square]]"
}`
Как и такая (Добавил кавычки для Common-square): &where=`{
"[[!strToInt? &input=`Common-square`]]:<=":"[[!#POST.square]]"
}`
UPD2:Обе части (тв common-square и переданное Постом)удалось привести к int
Вот код сниппета:
<?php
return (int)trim($input);
Вот код ресурса для выборки:[[!pdoResources?
&parents=`15`
&depth=`0`
&tpl=`tpl_house_page`
&includeTVs=`people, main-pic, 1st-floor-square, 2nd-floor-square, Balkon-square, Common-square, Terassa-square`
&where=`{
"[[!strToInt? &input=`[[*Common-square]]`]]:<=":"[[!strToInt? &input=`[[!#POST.square]]`]]",
"AND:people:>=":"[[!#POST.people_count]]"
}`
&showLog=`0`
]]
Но проверка теперь не работает вообще никак, раньше хоть работала на значениях больше 100, теперь всегда возвращает пустоту длиной в 10 байт. Комментарии: 4
меньше 100 или значение с минусом?
значения с минусом там нет, нижний предел выбора площади 50, следовательно для значений от 50 до 100
ТВшки хранятся как текст. Тут идет сравнение строк, а не числовых значений.
а как сравнивать их как числа?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.