In the example below, a simple input data from the Companies module that does not contain array and object data is being validated.
src/App/Filter/Companies/SaveFilter.php
<?php
namespace App\Filter\Companies;
use App\Filter\InputFilter;
use App\Filter\Utils\ToDate;
use App\Validator\Db\RecordExists;
use App\Validator\Db\NoRecordExists;
use Laminas\Validator\Date;
use Laminas\Filter\StringTrim;
use Laminas\Validator\Uuid;
use Laminas\Validator\StringLength;
use Laminas\Db\Adapter\AdapterInterface;
class SaveFilter extends InputFilter
{
public function __construct(AdapterInterface $adapter)
{
$this->adapter = $adapter;
}
public function setInputData(array $data)
{
$this->add([
'name' => 'id',
'required' => true,
'validators' => [
['name' => Uuid::class],
[
'name' => HTTP_METHOD == 'POST' ? NoRecordExists::class : RecordExists::class,
'options' => [
'table' => 'companies',
'field' => 'companyId',
'adapter' => $this->adapter,
]
]
],
]);
$this->add([
'name' => 'companyName',
'required' => true,
'filters' => [
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'min' => 3,
'max' => 160,
],
],
],
]);
$this->add([
'name' => 'companyShortName',
'required' => true,
'filters' => [
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'min' => 2,
'max' => 60,
],
],
],
]);
$this->add([
'name' => 'taxOffice',
'required' => false,
'filters' => [
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'min' => 3,
'max' => 100,
],
],
],
]);
$this->add([
'name' => 'taxNumber',
'required' => false,
'filters' => [
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'min' => 3,
'max' => 60,
],
],
],
]);
$this->add([
'name' => 'address',
'required' => false,
'filters' => [
['name' => StringTrim::class],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'min' => 3,
'max' => 255,
],
],
],
]);
$this->add([
'name' => 'createdAt',
'filters' => [
['name' => ToDate::class],
],
'required' => false,
'validators' => [
[
'name' => Date::class,
'options' => [
'format' => 'Y-m-d',
'strict' => false,
]
],
],
]);
// Set input data
//
$this->setData($data);
}
}
You can get more information by visiting the links that follow.