Skip to content

Instantly share code, notes, and snippets.

@slavik112211
Created October 16, 2012 18:22
Show Gist options
  • Save slavik112211/3901055 to your computer and use it in GitHub Desktop.
Save slavik112211/3901055 to your computer and use it in GitHub Desktop.
Filtering association field
<?php
namespace BVD\PetroleumBundle\Util;
use Lexik\Bundle\FormFilterBundle\Filter\Extension\Type\TextFilterType;
use Lexik\Bundle\FormFilterBundle\Filter\Extension\Type\FilterTypeInterface;
use Lexik\Bundle\FormFilterBundle\Filter\Extension\Type\AbstractFilterType;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\FormInterface;
use Lexik\Bundle\FormFilterBundle\Filter\Expr;
class EntityNameFilterType extends AbstractFilterType implements FilterTypeInterface {
/**
* {@inheritdoc}
*/
public function getName()
{
return 'filter_entity_name';
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'text';
}
/**
* {@inheritdoc}
*/
public function getTransformerId()
{
return 'lexik_form_filter.transformer.default';
}
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
parent::setDefaultOptions($resolver);
$resolver->setDefaults(array(
'association_field' => "",
));
}
/**
* {@inheritdoc}
*/
public function applyFilter(QueryBuilder $queryBuilder, Expr $expr, $field, array $values, FormInterface $form = null)
{
$field = $form->getConfig()->getOptions()['association_field'];
if (!empty($values['value'])) {
$queryBuilder->andWhere($expr->stringLike($field, $values['value'], TextFilterType::PATTERN_CONTAINS));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment