Exemple #1
0
 public function process()
 {
     if ($this->getCallable()) {
         parent::process();
     } else {
         $n = $this->getNavigator();
         $c = $n->conditions();
         $this->prepareFromCondition($c);
         $this->prepareToCondition($c);
     }
 }
Exemple #2
0
 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)));
         }
     }
 }
Exemple #3
0
 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'), 'Нет такого значения в массиве');
 }