Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Symfony Filter Bundle

Code Coverage License Latest Stable Version Total Downloads


This bundle add a service that can be used to filter object values based on annotations. Laminas filter old ZendFilters used for filtering. Also bundle can filter your forms if it finds a annotated entity attached. If auto_filter_forms enabled entities will be filtered before they are validated. Laminas filters doc

Installation Symfony Flex

composer config extra.symfony.allow-contrib true
composer require bukashk0zzz/filter-bundle

Installation without Symfony Flex

composer require bukashk0zzz/filter-bundle

Add the bundle to app/AppKernel.php

$bundles = array(
	// ... other bundles
	new Bukashk0zzz\FilterBundle\Bukashk0zzzFilterBundle(),


Add this to your config.yml:

    # Enable if you need auto filtering form data before constraint(Validation) check
    auto_filter_forms: false


Bundle provides one annotation which allow filter fields in your entities.

Add the next class to the use section of your entity class.

use Bukashk0zzz\FilterBundle\Annotation\FilterAnnotation as Filter;

Annotation @Filter has one required option filter which value should be name of Laminas filter class. It can be set like this @Filter("StringTrim") or @Filter(filter="AppBundle\Filter\MyCustomFilter").

AppBundle\Filter\MyCustomFilter - in this example, must be class that extends \Laminas\Filter\AbstractFilter

Also there is one not required option options - it must be array type and will pass to Laminas filter using setOptions method from Laminas filter.

Example entity

namespace AppBundle\Entity;

use Bukashk0zzz\FilterBundle\Annotation\FilterAnnotation as Filter;

 * User Entity
class User
    #[Filter(parameters: [
        'filter' => 'StripTags',
        'options' => ['allowTags' => 'br']
    #[Filter(parameters: ['filter' => 'StringTrim'])]
    #[Filter(parameters: ['filter' => 'StripNewlines'])]
    protected $name;

    #[Filter(parameters: ['filter' => 'StripTags'])]
    #[Filter(parameters: ['filter' => 'StringTrim'])]
    #[Filter(parameters: ['filter' => 'AppBundle\Filter\MyCustomFilter'])]
    protected $about;

Using filter service

Use the bukashk0zzz_filter.filter service along with annotations in the Entity to filter data.

public function indexAction()

    $entity = new \Acme\DemoBundle\Entity\SampleEntity();
    $entity->name = "My <b>name</b>";
    $entity->email = "";

    $filterService = $this->get('bukashk0zzz_filter.filter');

    return ['entity' => $entity];

Copyright / License