Ciao a tutti,
Sto imparando ad usare ZF2 grazie ad un libro ZendFramework 2.0 by Example Beginner's Guide.
Il metodo di apprendimento consiste nel "copiare" un esempio di codice già fatto e poi fare un'esercizio simile a quello copiato.
Al momento ho creato un modulo Users che contiene controller, view e form per la registrazione ed il login.
Il prossimo passo consite nel aggiungere filtri e validatori, ho scritto il codice in modo identico al libro ma eseguendolo non appare nessun commento riguardo campi obbligatori o inserimenti non conformi.
Ho riguardato parecchie volte il codice ed è in tutto e per tutto uguale al libro non so che fare, potreste darmi una mano a trovare l'errore. Il codice è il seguente:
index.phtml --> Vista del form in cui è presente il campo di visualizzazione degli errori e viene richiamata la action process del controller Register che esegue la validazione
<section class="register">
<h2>Register</h2>
<?php if($this->error) : ?>
<p class='error'>
There were one or more issues wirh your submission.
Prease correct them as indicated below.
</p>
<?php endif ?>
<?php
$form = $this->form;
$form->prepare();
$form->setAttribute('action', $this->url(NULL,
array('controller' => 'Register', 'action' => 'process')));
$form->setAttribute('method', 'post');
echo $this->form()->openTag($form);
?>
metodo ProcessAction in RegisterController che dovrebbe eseguire la validazione
public function processAction() {
if(!$this->request->isPost()){
return $this->redirect()->toRoute(NULL, array(
'controller' => 'register',
'action' => 'index'
));
}
$post = $this->request->getPost();
$form = new RegisterForm();
$inputFilter = new RegisterFilter();
$form->setInputFilter($inputFilter);
$form->setData($post);
if(!$form->isValid()){
$model = new ViewModel(array(
'error' => true,
'form' => $form,
));
$model->setTemplate('users/register/index');
return $model;
}
return $this->redirect()->toRoute(NULL, array(
'controller' => 'register',
'action' => 'confirm'
));
}
classe RegisterFilter che contiene filtri e validatori
<?php
namespace Users\Form;
use Zend\InputFilter\InputFilter;
class RegisterFilter extends InputFilter{
public function __construct() {
$this->add(array(
'name' => 'email',
'required' => true,
'validators' => array(
'name' => 'EmailAddress',
'options' => array(
'domanin' => true,
),
),
));
$this->add(array(
'name' => 'name',
'required' => true,
'filters' => array(
'name' => 'StripTags',
'options' => array(
'domanin' => true,
),
),
'validators' => array(
array(
'name' => 'StringLenght',
'options' => array(
'encoding' => 'UTF-8',
'min' => 2,
'max' => 140,
),
),
),
));
$this->add(array(
'name' => 'password',
'required' => 'true',
));
$this->add(array(
'name' => 'confirm_password',
'required' => 'true',
));
}
}
Da Netbeans mi da dei warning sulla lunghezza di alcuni medodi e costruttori che non dovrebbero superare le 20 righe di codice, ma non dovrebbero esere quello il problema.