composer create-project -sdev zendframework/skeleton-application zf3
install zendframework/zend-mvc-i18n
composer require zendframework/zend-mvc-i18n
install zendframework/zend-form
composer require zendframework/zend-form
composer require soflomo/purifier:2.0.0-beta
register to config/modules.config.php
return [
'Zend\Form' ,
'Zend\InputFilter' ,
'Zend\Filter' ,
'Zend\Hydrator' ,
'Zend\Router' ,
'Zend\Validator' ,
'Application' ,
'Soflomo\Purifier' ,
];
<?php
namespace Application \Form ;
use Zend \Form \Element \Text ;
use Zend \Form \Form ;
use Zend \InputFilter \InputFilterProviderInterface ;
class SampleForm extends Form implements InputFilterProviderInterface
{
public function init ()
{
$ this ->add ([
'name' => 'sampleinput' ,
'type' => Text ::class,
'options' => [
'label' => 'sample input: '
],
]);
$ this ->add (array (
'name' => 'submit' ,
'type' => 'Submit' ,
'attributes' => array (
'value' => 'Go' ,
'id' => 'submitbutton' ,
),
));
}
public function getInputFilterSpecification ()
{
return [
[
'name' => 'sampleinput' ,
'required' => true ,
'filters' => [
['name' => 'htmlpurifier' ],
],
],
];
}
}
inject controller with the form
<?php
namespace Application ;
return [
// ...
'controllers' => [
'factories' => [
Controller \IndexController ::class => function ($ container ) {
return new Controller \IndexController (
$ container ->get ('FormElementManager' )->get (Form \SampleForm ::class)
);
},
],
],
];
<?php
namespace Application \Controller ;
use Application \Form \SampleForm ;
use Zend \Mvc \Controller \AbstractActionController ;
use Zend \View \Model \ViewModel ;
class IndexController extends AbstractActionController
{
private $ form ;
public function __construct (SampleForm $ form )
{
$ this ->form = $ form ;
}
public function indexAction ()
{
$ request = $ this ->getRequest ();
if ($ request ->isPost ()) {
$ this ->form ->setData ($ request ->getPost ());
var_dump($ this ->form ->isValid ());
}
return new ViewModel (['form' => $ this ->form ]);
}
}
$ form ->prepare ();
echo $ this ->form ()->openTag ($ form );
echo $ this ->formRow ($ form ->get ('sampleinput' ));
echo $ this ->formRow ($ form ->get ('submit' ));
echo $ this ->form ()->closeTag ();