Страница 1 из 1

Фильтр Списка страниц

СообщениеДобавлено: 27 ноя 2013, 14:00
sergio11ofpp
Добрый День,
У меня имеется Аттрибут число для страницы,

И мне нужно фильтровать Список страниц Где Число меньше

Код: Выделить всё
$pl->filterByAttribute('number', '$_POST['number']',  $comparison = '<');


То есть хочу показать все страницы где Аттрибут Число меньше введённого числа но не работает

Код: Выделить всё
$pl->filterByAttribute('number', '%'.$_POST['number'].'%', 'LIKE');


Только так. Но так мне даст страницы где число именно "50" если ввели 50

Нельзя фильтровать промежуток чисел?

Re: Фильтр Списка страниц

СообщениеДобавлено: 27 ноя 2013, 14:11
Count_Raven
Вам не кажется, что вы с кавычками напутали?

Код: Выделить всё
$pl->filterByAttribute('number', $_POST['number'],  $comparison = '<');


А еще валидацию $_POST надо сначала сделать, чтобы туда гадости не попали случайным или злонамеренным образом.
Хоть вот так, если совсем просто:

Код: Выделить всё
$pl->filterByAttribute('number', intval($_POST['number']),  $comparison = '<');

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 18:27
sergio11ofpp
Не ну POST понятно я обычно так Loader::db()->escape($POST['value']);

А на счёт ковычек х3 вроде норм))

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 18:29
sergio11ofpp
Ой сейчас только заметил нет это только тут так извините в Коде у меня нормально!

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 19:11
Count_Raven
sergio11ofpp писал(а):Не ну POST понятно я обычно так Loader::db()->escape($POST['value']);

А на счёт ковычек х3 вроде норм))


Вы каждый раз делаете Loader::db() ?

Лучше делать так:

$db = Loader::db();

$db->bla-bla-bla();
$db->bla-bla-bla();
$db->bla-bla-bla();

Либо вообще в конструкторе объекта создать экземпляр типа:
$this->db = Loader::db();
а потом внутри класса повсюду его использовать.

В контроллерах блоков объявлять это не обязательно, там можно просто обращаться к $this->db так как он уже существует.

Для проверки и чистки входных данных есть validation helper и text helper. При помощи их можно удостовериться что это именно число (и т.д. и т.п.) и обеззаразить строку от какашек.

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 19:33
Count_Raven
еще есть magic-функции, т.е. можно просто написать filterByNumber

В данном случае к функции filterBy добавляется handler атрибута.
Т.е. если у нас атрибут имеет handler к примеру "my_super_attribute", то функция будет называться filterByMySuperAttribute

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 19:37
Count_Raven
А еще, зачем вы указываете comparison в данном контексте?
Просто напишите знак:
Код: Выделить всё
$pl->filterByAttribute('number', intval($_POST['number']), '<');

Re: Фильтр Списка страниц

СообщениеДобавлено: 28 ноя 2013, 19:41
Count_Raven
Должно работать, если не работает, то нужно отладку произвести, сделать вывод всех данных, посмотреть где не так.
В конце концов можете сделать вывод сгенерированного SQL-запроса в модели page_list или в database_item_list.
Еще поставьте xdebug (если не уже), чтобы проще было отладкой заниматься.