[ZendFramework2] FormValidation e InputFilter

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.

inviato 2 anni fa
Mrk31
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda