On this page
Cookbook
Using Input Filters in Forms of laminas-form
The following examples show two potential use cases of laminas-inputfilter within laminas-form.
Define the Input Filter in a Form
An input filter can be defined directly in a form class itself, using Laminas\InputFilter\InputFilterProviderInterface
.
This interface provides one method (getInputFilterSpecification()
) that is used by a form to create an input filter.
Create a form as a separate class, define the init
method, implement the interface Laminas\InputFilter\InputFilterProviderInterface
, and define its inputs via a configuration array; as an example, consider the following definition in a file found at module/Album/src/Form/AlbumForm.php
:
namespace Album\Form;
use Laminas\Filter\StringTrim;
use Laminas\Filter\StripTags;
use Laminas\Form\Element\Text;
use Laminas\Form\Form;
use Laminas\InputFilter\InputFilterProviderInterface;
use Laminas\Validator\StringLength;
final class AlbumForm extends Form implements InputFilterProviderInterface
{
public function init(): void
{
// Add form elements
$this->add([
'name' => 'title',
'type' => Text::class,
'options' => [
'label' => 'Title',
],
]);
// …
}
public function getInputFilterSpecification(): array
{
return [
// Add inputs
[
'name' => 'title',
'filters' => [
['name' => StripTags::class],
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'min' => 1,
'max' => 100,
],
],
],
],
// …
];
}
}
Adding an Input Filter Defined as a Separate Class to a Form
Create Input Filter
Create an input filter as a separate class, e.g. module/Album/src/InputFilter/AlbumInputFilter.php
:
namespace Album\InputFilter;
use Laminas\Filter\StringTrim;
use Laminas\Filter\StripTags;
use Laminas\Validator\StringLength;
use Laminas\InputFilter\InputFilter;
final class AlbumInputFilter extends InputFilter
{
public function init(): void
{
// Add inputs
$this->add(
[
'name' => 'title',
'filters' => [
['name' => StripTags::class],
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'min' => 1,
'max' => 100,
],
],
],
]
);
// …
}
}
Create Form and Add Input Filter
An input filter can be added directly in a form class itself, using the class name of the input filter or whatever name the input filter is registered under.
Create a form as a separate class, define its init
method, and set the input filter via the setInputFilterByName()
method of Laminas\Form\Form
, e.g. module/Album/src/Form/AlbumForm.php
:
namespace Album\Form;
use Album\InputFilter\AlbumInputFilter;
use Laminas\Form\Element\Text;
use Laminas\Form\Form;
final class AlbumForm extends Form
{
public function init(): void
{
// Set the input filter
$this->setInputFilterByName(AlbumInputFilter::class);
// Add form elements
$this->add([
'name' => 'title',
'type' => Text::class,
'options' => [
'label' => 'Title',
],
]);
// …
}
}