PHPackages                             metalinspired/laminas-mixed-collection-input-filter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. metalinspired/laminas-mixed-collection-input-filter

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

metalinspired/laminas-mixed-collection-input-filter
===================================================

Extended collection input filter that allows using different input filter per collection item

1.0.0(2y ago)06BSD-3-ClausePHPPHP ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0

Since Nov 23Pushed 2y ago2 watchersCompare

[ Source](https://github.com/metalinspired/laminas-mixed-collection-input-filter)[ Packagist](https://packagist.org/packages/metalinspired/laminas-mixed-collection-input-filter)[ RSS](/packages/metalinspired-laminas-mixed-collection-input-filter/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

laminas-mixed-collection-input-filter
=====================================

[](#laminas-mixed-collection-input-filter)

This collection input filter allows you to define multiple input filters for collection items. Practical usage would be if you have an array (collection) of items which can have different structure and, thus, would require different input filter to filter/validate each item in collection.

Example
-------

[](#example)

```
class ExampleInputFilter extends InputFilter
{
    public function init()
    {
        $this->add((new MixedCollectionInputFilter())
            ->setNameKey('type')
            ->setInputFilters([
                'picture' => $this->picture(),
                'link' => $this->link(),
                'comment' => $this->comment(),
            ])
            ->setFactory($this->getFactory()), 'content');
    }

    private function picture() : InputFilter
    {
        return (new InputFilter())
            ->add(['name' => 'type'])
            ->add(['name' => 'alt'])
            ->add(['name' => 'src']);
    }

    private function link() : InputFilter
    {
        return (new InputFilter())
            ->add(['name' => 'type'])
            ->add(['name' => 'title'])
            ->add(['name' => 'href'])
            ->add(['name' => 'target']);
    }

    private function comment() : InputFilter
    {
        return (new InputFilter())
            ->add(['name' => 'type'])
            ->add(['name' => 'author'])
            ->add(['name' => 'email'])
            ->add(['name' => 'title'])
            ->add(['name' => 'text'])
            ->add([
                'name' => 'notifications',
                'filters' => [
                    ['name' => \Laminas\Filter\Boolean::class],
                ],
                'validators' => [
                    [
                        'name' => \Laminas\Validator\InArray::class,
                        'options' => [
                            'haystack' => ['0', '1'],
                        ],
                    ],
                ],
            ]);
    }
}

$inputFilter = new ExampleInputFilter();
$inputFilter->init();

$data = [
    'content' => [
        [
            'type' => 'picture',
            'alt' => 'Some picture',
            'src' => 'url',
            'foo' => 'This element will be filtered out',
        ],
        [
            'type' => 'link',
            'href' => 'url',
            'title' => 'Link to something',
            'target' => '_blank',
        ],
        [
            'type' => 'comment',
            'author' => 'unknown',
            'email' => 'dummy@email.com',
            'title' => 'Example',
            'text' => 'Got nothing more to say',
            'notifications' => '1',
        ],
        [
            'type' => 'picture',
            'alt' => 'Another picture',
            'src' => 'another url',
        ],
    ],
];

$inputFilter->setData($data);

if ($inputFilter->isValid()) {
    var_dump($inputFilter->getValues());
} else {
    var_dump($inputFilter->getMessages());
}
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

907d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d9bfe1b062ffcfed45fc969e1c354add7e44a6dbf3216dd587fc660f53ce155?d=identicon)[metalinspired](/maintainers/metalinspired)

---

Top Contributors

[![metalinspired](https://avatars.githubusercontent.com/u/18539473?v=4)](https://github.com/metalinspired "metalinspired (3 commits)")

---

Tags

laminasinputfilter

### Embed Badge

![Health badge](/badges/metalinspired-laminas-mixed-collection-input-filter/health.svg)

```
[![Health](https://phpackages.com/badges/metalinspired-laminas-mixed-collection-input-filter/health.svg)](https://phpackages.com/packages/metalinspired-laminas-mixed-collection-input-filter)
```

###  Alternatives

[laminas/laminas-inputfilter

Normalize and validate input sets from the web, APIs, the CLI, and more, including files

4614.4M97](/packages/laminas-laminas-inputfilter)[laminas/laminas-form

Validate and display simple and complex forms, casting forms to business objects and vice versa

8112.0M115](/packages/laminas-laminas-form)[laminas/laminas-escaper

Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs

22088.6M140](/packages/laminas-laminas-escaper)[laminas/laminas-validator

Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria

15544.9M188](/packages/laminas-laminas-validator)[laminas/laminas-i18n

Provide translations for your application, and filter and validate internationalized values

7823.6M200](/packages/laminas-laminas-i18n)[laminas/laminas-captcha

Generate and validate CAPTCHAs using Figlets, images, ReCaptcha, and more

2318.5M43](/packages/laminas-laminas-captcha)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
