Filter Form Types 

Filter Form Types are PHP classes that represent filters and extend standard Symfony form types. Each filter form type is a compound and consists of two fields:

  • a field for filter value (named “value”)

  • a field for filter operator (named “type”)

The following filters form types are available:

Class

Name

Short Description

FilterType

oro_type_filter

Basic type for all filters, declares two children, value and type

TextFilterType

oro_type_text_filter

Represents text filter form

NumberFilterType

oro_type_number_filter

Represents number filter form

NumberRangeFilterType

oro_type_number_range_filter

Represents number range filter form

ChoiceFilterType

oro_type_choice_filter

Represents choice filter form

EntityFilterType

oro_type_entity_filter

Represents entity filter form

BooleanFilterType

oro_type_boolean_filter

Represents boolean filter form

DateRangeFilterType

oro_type_date_range_filter

Represents date filter form

DateTimeRangeFilterType

oro_type_datetime_range_filter

Represents date and time filter form

DateRangeType

oro_type_date_range

This form type is used by oro_type_date_range_filter as field type

DateTimeRangeType

oro_type_datetime_range

This form type is used by oro_type_datetime_range_filter as field type

DateGroupingFilterType

oro_type_date_grouping_filter

Represents date grouping filter

SkipEmptyPeriodsFilterType

oro_type_skip_empty_periods_filter

Represents skip empty periods filter

oro_type_filter Form Type 

Children

  • value

  • type

Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = TextType::class

  • operator_type = ChoiceType::class

  • show_filter = False

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\FilterType

Options Description

  • field_type - This option declares the type of the value child element.

  • field_options - Value of this option will be used as the options array for the value field.

  • operator_choices - Value of this option will be used as the value of the “choices” option of the type field.

  • operator_type - This option declares the type of type child element. By default, the velue is “choice”.

  • operator_options - Value of this option will be used as the options array for the type field.

  • show_filter - If FALSE, then the filter will be hidden when it is rendered in the filter list.

oro_type_text_filter Form Type 

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = text

  • operator_choices

    • TextFilterType::TYPE_CONTAINS

    • TextFilterType::TYPE_NOT_CONTAINS

    • TextFilterType::TYPE_EQUAL

Parent Type

oro_type_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\TextFilterType

oro_type_number_filter Form Type 

Options

  • data_type

  • fromatter_options

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = text

  • operator_choices

    • NumberFilterType::TYPE_GREATER_EQUAL

    • NumberFilterType::TYPE_GREATER_THAN

    • NumberFilterType::TYPE_EQUAL

    • NumberFilterType::TYPE_LESS_EQUAL

    • NumberFilterType::TYPE_LESS_THAN

  • data_type = NumberFilterType::DATA_INTEGER

Parent Type

oro_type_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\NumberFilterType

Options

  • data_type - This option can be used for configuration of value field type. Can be a value of one of constants: ::DATA_INTEGER or NumberFilterType::DATA_DECIMAL.

formatter_options

In addition to data_type option, this option can contain parameters for number formatter that is used by value field. Available attributes are:

  • decimals - maximum fraction digits

  • grouping - use grouping to separate digits

  • orderSeparator - symbol of grouping separator

  • decimalSeparator - symbol of decimal separator.

oro_type_number_range_filter Form Type 

Options

  • data_type

  • formatter_options

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = text

  • operator_choices

    • NumberRangeFilterType::TYPE_BETWEEN

    • NumberRangeFilterType::TYPE_NOT_BETWEEN

    • NumberRangeFilterType::TYPE_GREATER_EQUAL

    • NumberRangeFilterType::TYPE_GREATER_EQUAL

    • NumberRangeFilterType::TYPE_GREATER_THAN

    • NumberRangeFilterType::TYPE_EQUAL

    • NumberRangeFilterType::TYPE_LESS_EQUAL

    • NumberRangeFilterType::TYPE_LESS_THAN

    • FilterUtility::TYPE_EMPTY

    • FilterUtility::TYPE_NOT_EMPTY

  • data_type = NumberFilterType::DATA_INTEGER

Parent Type

oro_type_number_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\NumberRangeFilterType

Options

  • data_type - This option can be used for configuration of value field type. Can be a value of one of constants: NumberFilterType::DATA_INTEGER or NumberFilterType::DATA_DECIMAL.

formatter_options

In addition to data_type option, this option can contain parameters for number formatter that is used by value field. Available attributes are:

  • decimals - maximum fraction digits

  • grouping - use grouping to separate digits

  • orderSeparator - symbol of grouping separator

  • decimalSeparator - symbol of decimal separator.

oro_type_choice_filter Form Type 

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = choice

  • operator_choices

    • ChoiceFilterType::TYPE_CONTAINS

    • ChoiceFilterType::TYPE_NOT_CONTAINS

Parent Type

oro_type_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\ChoiceFilterType

oro_type_entity_filter Form Type 

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = entity

Parent Type

oro_type_choice_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\EntityFilterType

oro_type_boolean_filter Form Type 

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_options = choices

    • BooleanFilterType::TYPE_YES

    • BooleanFilterType::TYPE_NO

Parent Type

oro_type_choice_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\BooleanFilterType

oro_type_date_range_filter Form Type 

Options

  • widget_options

  • type_values

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

Default Options

  • field_type = oro_type_date_range

  • widget_options = [“dateFormat” => “mm/dd/yy”, “firstDay” => 0]

  • operator_choices

    • DateRangeFilterType::TYPE_BETWEEN

    • DateRangeFilterType::TYPE_NOT_BETWEEN

  • type_values

    • DateRangeFilterType::TYPE_BETWEEN

    • DateRangeFilterType::TYPE_NOT_BETWEEN

Parent Type

oro_type_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\DateRangeFilterType

Options Description

  • widget_options - Value of this option will be used by javascript widget to correctly display its data. Default value of this option depend from of current application locale options.

  • type_values - Value of this option will be used by javascript widget to generate valid hint of current filter value (strings like “between %start% and %end%”, “before %start%”, “after %end%”, “not between %start%”, etc)

oro_type_datetime_range_filter Form Type 

Options

  • widget_options

  • type_values

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

  • type_values

  • widget_options

Default Options

  • field_type = oro_type_datetime_range

  • widget_options = [“dateFormat” => “mm/dd/yy”, “timeFormat” => “hh:mm tt”, “firstDay” => 0]

Parent Type

oro_type_date_range_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\DateRangeFilterType

oro_type_date_range Form Type 

Children

  • start

  • end

Options

  • field_type

  • field_options

  • start_field_options

  • end_field_options

Default Options

  • field_type = “date”

Class

Oro\Bundle\FilterBundle\Form\Type\DateRangeType

Options Description

  • field_type - This option declares type of start and end child elements.

  • field_options - Value of this option will be used as options array for start and end fields.

  • start_field_options - Value of this option will be used as options array for start field.

  • end_field_options - Value of this option will be used as options array for end field.

oro_type_datetime_range Form Type 

Default Options

  • field_type = “datetime”

Parent Type

oro_type_date_range

Class

Oro\Bundle\FilterBundle\Form\Type\DateTimeRangeType

oro_type_date_grouping_filter Form Type 

Options

  • data_name

  • joined_column

  • not_nullable_field

  • calendar_entity

  • target_entity

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

  • field_type

  • operator_choices

Default Options

  • calendar_table = “calendarDate”

  • calendar_column = ‘date’

  • calendar_table_for_grouping = ‘calendarDate1’

  • calendar_column_for_grouping = ‘date’

  • joined_table = ‘joinedTableAlias’

  • target_column = ‘date’

Parent Type

oro_type_choice_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\DateGroupingFilterType

oro_type_skip_empty_periods_filter Form Type 

Options

  • not_nullable_field

Inherit Options

  • field_type

  • field_options

  • operator_choices

  • operator_type

  • operator_options

  • show_filter

  • field_type

  • operator_choices

Parent Type

oro_type_choice_filter

Class

Oro\Bundle\FilterBundle\Form\Type\Filter\DateGroupingFilterType

Example of Usage 

You can use filter form types as any other form type in Symfony. For example, consider you have a form with three filters. In your form type you should add code like this:

class MyFilterFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // Add some form fields
        // ...
        // Add filters
        $builder->add('name', TextFilterType::class);
        $builder->add('salary', NumberFilterType::class);
        $builder->add('hobby', ChoiceFilterType::class, [
        field_options' => [
                'choices' => [1 => 'Coding', 2 => 'Hiking', 3 => 'Photography'],
                'multiple' => true
            ]
        ]);
    }
}

References