public function process() { if ($this->getCallable()) { parent::process(); } else { $n = $this->getNavigator(); $c = $n->conditions(); $this->prepareFromCondition($c); $this->prepareToCondition($c); } }
public function process() { $n = $this->getNavigator(); if ($this->getCallable()) { parent::process(); } else { if ($val = $this->getCleanValue()) { $n->conditions()->like($this->getField(), sprintf($this->getLikeTemplate(), $this->cleanValue($val))); } } }
function testValidators() { $n = new Navigator(Request::create('http://localhost/test:1/'), new Manager()); $alnum = 'abc123'; $f = new Filter($n, 'test'); $this->assertTrue($f->validate($alnum), 'Валидатор не задан'); $f->setValidator('is_numeric'); $this->assertEquals(1, $f->getCleanValue(), 'Корректное значение из URL после валидации'); $this->assertFalse($f->validate($alnum), 'Только числа'); $this->assertTrue($f->validate(123), 'Цифры можно'); $f->setValidator('/^[a-z]+$/'); $this->assertFalse($f->getCleanValue(), 'Некорректное значение не передается'); $this->assertFalse($f->validate($alnum), 'Только буквы'); $this->assertTrue($f->validate('abc'), 'Буквы можно'); $f->setValidator(false); $f->setOptions(array(1 => 'one', 2 => 'two')); $this->assertTrue($f->validate(1), 'Верное значение - ключ массива'); $this->assertFalse($f->validate('one'), 'Нет такого ключа в массиве'); $this->assertFalse($f->validate(false), 'Отсутствующий параметр'); $this->assertTrue($f->validate(array(1, 2)), 'Все значения массива есть среди допустимых'); $this->assertFalse($f->validate(array(1, 3)), 'Один из элементов вне диапазона'); $f->validate(1); $exp = '<select name="test">' . '<option selected="selected" value="1">one</option>' . "\n" . '<option value="2">two</option>' . "\n" . '</select>'; $this->assertEquals($exp, $f->asSelect()->toHTML(), 'Генерация списка SELECT'); $exp = '<input name="test" type="text" value="1" />'; $this->assertEquals($exp, $f->asInput()->toHTML(), 'Фильтр как поле для ввода со значением по-умолчанию'); $f->setValidator('/^[a-z]+$/'); $exp = '<input name="test" type="text" value="" />'; $this->assertEquals($exp, $f->asInput()->toHTML(), 'Значение не прошедшее валидацию не подставляется'); $exp = '<input class="hello" name="test" type="text" value="" />'; $this->assertEquals($exp, $f->asInput('hello')->toHTML(), 'Можно указать произвольные аттрибуты'); $f->setOptions(array('one', 'two'), true); $this->assertTrue($f->validate('one'), 'Верное значение - значение массива'); $this->assertFalse($f->validate('three'), 'Нет такого значения в массиве'); }