示例#1
0
文件: Like.php 项目: cmsx/navigator
 public function process(Navigator $navigator)
 {
     if ($this->getCallable()) {
         parent::process();
     } else {
         if ($cond = $this->prepareLikeCondition()) {
             $navigator->addCondition($cond);
         }
     }
 }
示例#2
0
 public function process(Navigator $navigator)
 {
     if ($this->getCallable()) {
         parent::process();
     } else {
         if ($from = $this->prepareFromCondition()) {
             $navigator->addCondition($from);
         }
         if ($to = $this->prepareToCondition()) {
             $navigator->addCondition($to);
         }
     }
 }
示例#3
0
文件: items.php 项目: cmsx/navigator
 function testValidators()
 {
     $alnum = 'abc123';
     $f = new Filter(makeNavigator('/test:1/'), '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)), 'Один из элементов вне диапазона');
     $exp = '<option value="1">one</option>' . "\n" . '<option selected="selected" value="2">two</option>' . "\n";
     $this->assertEquals($exp, $f->asSelectOptions(2), 'Явно указанное значение для Опции для SELECT');
     $exp = '<option selected="selected" value="1">one</option>' . "\n" . '<option value="2">two</option>' . "\n";
     $this->assertEquals($exp, $f->asSelectOptions(), 'Значение опций выбрано из URL');
     $exp = '<select name="test">' . "\n" . $exp . '</select>';
     $this->assertEquals($exp, $f->asSelect(), 'Генерация списка SELECT');
     $exp = '<input name="test" type="text" value="1" />';
     $this->assertEquals($exp, $f->asInput(), 'Фильтр как поле для ввода со значением по-умолчанию');
     $f->setValidator('/^[a-z]+$/');
     $exp = '<input name="test" type="text" value="" />';
     $this->assertEquals($exp, $f->asInput(), 'Значение не прошедшее валидацию не подставляется');
     $exp = '<input class="hello" name="test" type="text" value="" />';
     $this->assertEquals($exp, $f->asInput('hello'), 'Можно указать произвольные аттрибуты');
     $f->setOptions(array('one', 'two'), true);
     $this->assertTrue($f->validate('one'), 'Верное значение - значение массива');
     $this->assertFalse($f->validate('three'), 'Нет такого значения в массиве');
 }