Convalida dei campi

Dovrei convalidare dei campi.

Nel senso che se si inserisce qualcosa di sbagliato su di un campo deve poi comparire un messaggiodi errore del tipo email  inserita non valita. Avrei pensato a Zend_Validator, anche se ho guardato la guida, non ho capito il funzionamento.

Ho questo codice nel file authcontroller

<?php

class AuthController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
                $form = new Application_Form_Login();
                $request = $this->getRequest();
                if ($request->isPost())
                {
                    if ($form->isValid($request->getPost()))
                    {
                        if (Zend_Validate_EmailAddress::INVALID_FORMAT('email'))
                        {
                            echo 'email non iserita correttamente';
                        }
                     /*   if ($this->_process($form->getValues('password')))
                        {
                            $this->_helper->redirector('index', 'index');
                        }*/
                     }
                 }
             $this->view->form = $form;
    }

    protected function _process($values)
    {
        $adapter=$this->_getAuthAdapter();
                $adapter->setIdentity($values['username']);
                $adapter->setCredential($values['password']);
                
                $auth = Zend_Auth::getInstance();
                $result = $auth->authenticate($adapter);
                if ($result->isValid())
                {
                    $user =$adapter->getResultRowObject();
                    $auth->getStorage()->write($user);
                    return  true;
                }
                return false;
    }

    protected function _getAuthAdapter()
    {
        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
                $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
                
                $authAdapter->setTableName('utenti')
                            ->setIdentityColumn('username')
                            ->setCredentialColumn('password');
             
                return $authAdapter;
    }

       
    public function registrationAction()
    {
        // action body
        $form = new Application_Form_Login();
        $form->submit->setLabel('Registration');
        $this->view->form = $form;
        
        if ($this->getRequest()->isPost()) 
        {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) 
            {
                $nome = $form->getValue('nome');
                $cognome = $form->getValue('cognome');
                $username = $form->getValue('username');
                $password = $form->getValue('password');
                $email = $form->getValue('email');
                $ruolo = $form->getValue('ruolo');
                $login= new Application_Model_DbTable_Utenti();
                $login->updateUtenti($id, $nome, $cognome, $username, $password, $email, $ruolo);
                
                $this->_helper->redirector('index');
            }
            else 
            {    $form->populate($formData);    }
        }
        else 
        {
            $id = $this->_getParam('id', 0);
            if ($id > 0) 
            {
                $utenti = new Application_Model_DbTable_Utenti();
                $form->populate($utenti->getUtenti($id));
            }
        }        
    }
}

e questo nel file login.phph nella form

$this->addElement('text','nome', array(
        'filters'=>array('StringTrim','StringToLower'),
        [b]'messaqes'=>'Non valido'[/b]
        'validators'=>array(
        array('StringLength', false, array(0, 50)),),
        'required'=>true, 
        'label'=>'email',));
inviato 6 anni fa
lucavalentino
X 0 X

In authcontroller aggiungo

if ($form->isValid($request->getPost()))
                    {
                        if (Zend_Validate_EmailAddress::INVALID_FORMAT('email'))
                        {
                            echo 'email non iserita correttamente';
                        }

ma non succede nulla.

risposto 6 anni fa
lucavalentino
X 0 X
$this->addElement('text','cognome', array(
        'filters'=>array(
        'StringTrim','StringToLower'),
        'validators'=>array(array(
        'StringLength', false, array(5, 70)),),
        'Between', array('min'=>2, 'max'=>50),
        [b]'Alpha'=>true,
[/b]        'required'=>true, 
        'label'=>'Cognome:',));

per convalidare la lunghezza del campo  sono riuscito tramite Between, per dire che deve essere solo alfabetico devo usare Alpha, ma sbaglio qualcosa. dove????

risposto 6 anni fa
lucavalentino
X 0 X

ma [\b]  cosa sono?

risposto 5 anni fa
civre
X 0 X

I validators aggiungili al tuo form. Non devi fare così un controllo sul controller. Lo fa in automatico zend_form.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

In che senso

risposto 5 anni fa
lucavalentino
X 0 X

Vedi la documentazione:

http://framework.zend.com/manual/en/zend.form.elements.html

addValidator per esempio.

risposto 5 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda