use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
+use Lexik\Bundle\FormFilterBundle\Filter\FilterOperands;
+use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface;
class EntryFilterType extends AbstractType
{
'placeholder' => 'dd/mm/yyyy'),
'format' => 'dd/MM/yyyy',
'widget' => 'single_text'
- )));
+ )))
+ ->add('domainName', 'filter_text', array(
+ 'apply_filter' => function (QueryInterface $filterQuery, $field, $values)
+ {
+ $value = $values['value'];
+ if (strlen($value) <= 3 || empty($value)) {
+ return null;
+ }
+ $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%'));
+ return $filterQuery->createCondition($expression);
+ }
+ ));
}
public function getName()
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
</div>
+
<div class="col s12">
+
<label>{% trans %}Create at{% endtrans %}</label>
+
+ <label>{% trans %}Domain name{% endtrans %}</label>
+ </div>
+ <div class="input-field col s6">
+ {{ form_widget(form.domainName, {'type': 'text'}) }}
+ <label for="entry_filter_domainName">{% trans %}www.website.com{% endtrans %}</label>
</div>
<div class="input-field col s6">
{
$this->logInAs('admin');
$client = $this->getClient();
-
$crawler = $client->request('GET', '/config');
$form = $crawler->filter('button[id=config_save]')->form();
$this->assertContains($parameters, $client->getResponse()->getContent());
}
+
+ public function testFilterOnDomainName()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/unread/list');
+ $form = $crawler->filter('button[id=submit-filter]')->form();
+ $data = array(
+ 'entry_filter[domainName]' => 'monde'
+ );
+
+ $crawler = $client->submit($form, $data);
+ $this->assertCount(1, $crawler->filter('div[class=entry]'));
+
+ $form = $crawler->filter('button[id=submit-filter]')->form();
+ $data = array(
+ 'entry_filter[domainName]' => 'wallabag'
+ );
+
+ $crawler = $client->submit($form, $data);
+ $this->assertCount(0, $crawler->filter('div[class=entry]'));
+ }
}