title: Example of form validation cakephp
body: <p>anybody please give an example of validation form in cakephp, because i have cakephp 2.3.3 and cant' validate forms, doesnt recognize my model Usuario</p>
  
  <p><strong>model usuario</strong>
      
  
  <pre><code>    public function beforeSave($options = array()) {
          if (isset($this-&gt;data[$this-&gt;alias]['password'])) {
              $this-&gt;data[$this-&gt;alias]['password'] = AuthComponent::password($this-&gt;data[$this-&gt;alias]['password']);
          }
          return true;
      };
  
      public $validate = array(
          'nombre' =&gt; array(
              'sololetras' =&gt;array(
                  'rule' =&gt; '/^[a-z]$/i',
                  'message' =&gt; 'Solo se Permite Letras en este Campo'
              ),          
              'required'=&gt; true,
              'allowEmpty' =&gt; false,
  
          ),
  
          'apellido' =&gt; array(
              'allowEmpty' =&gt; false,
              'required'  =&gt; true,
  
          ),
  
          'email' =&gt; array(
              'email' =&gt; array(
                  'rule' =&gt; 'email',
                  'message' =&gt; 'El nombre de usuario debe ser una dirección de email válida.'
              ),
              'allowEmpty' =&gt; false,
              'required'  =&gt; true,
          ),
  
          'nrotlf' =&gt; array(
              'rule' =&gt; array('phone', null, 'us')
          )
      );
  }
  
  ?&gt;
  </code></pre>
  
  <p><strong>UsuarioController</strong></p>
  
  <pre><code>&lt;?php
  class UsuariosController extends AppController{
      var $name = 'Usuarios';
      var $helpers = array('Html','Form');
      //var $scaffold;
  
      function cargapaq(){  //Carga la lista de la tabla Paquete
          $this-&gt;loadModel('Paquete');
          $paquetes = $this-&gt;Paquete-&gt;find('list', array('fields'=&gt;'Paquete.id, Paquete.nombre'));
          //debug($paquetes);
          $this-&gt;set(compact('paquetes'));
      }
  
      function cargamod(){  //Carga la lista de la tabla Modelo
          $this-&gt;loadModel('Modelo');
          $modelos = $this-&gt;Modelo-&gt;find('list', array('fields'=&gt;'Modelo.id, Modelo.nombre'));
          //debug($modelos);
          $this-&gt;set(compact('modelos'));
      }
  
      function index(){
          $usuarios = $this-&gt;Usuario-&gt;find('all',array(
              'fields'=&gt;array(
                  'Usuario.nombre',
                  'Usuario.apellido',
                  'Usuario.email',
                  'Usuario.password',
                  'Usuario.grupo_id',
                  'Usuario.paquete_id',
                  'Usuario.modelo_id',
                  'Usuario.nrotlf',
                  'Usuario.valido',
                  'Usuario.id'),
              'conditions'=&gt;'Usuario.valido=true',
              'order'=&gt;'Usuario.apellido ASC')
          );
          $this-&gt;set('usuarios',$usuarios);   
  
          ###Carga del nombre de los modelos de telefonos para cada modelo en el index.ctp####
          $idmod = Hash::extract($usuarios,'{n}.Usuario.modelo_id');
          $array=array();
          $modelos=array();
          $this-&gt;loadModel('Modelo');
          for ($i=0; $i &lt; count($idmod); $i++) { 
              $busqueda = $this-&gt;Modelo-&gt;find('all', array('fields'=&gt;'Modelo.nombre', 'conditions'=&gt;"Modelo.id=$idmod[$i]"));
              array_push($modelos, $busqueda['0']);
          }
          $this-&gt;set('modelos',$modelos); 
          #######Fin de La Carga######### 
  
          ###Carga del nombre de los planes de telefonos para cada modelo en el index.ctp####
          $idpaq = Hash::extract($usuarios,'{n}.Usuario.paquete_id');
          $array=array();
          $paquetes=array();
          $this-&gt;loadModel('Paquete');
          for ($i=0; $i &lt; count($idpaq); $i++) { 
              $busqueda = $this-&gt;Paquete-&gt;find('all', array('fields'=&gt;'Paquete.nombre', 'conditions'=&gt;"Paquete.id=$idpaq[$i]"));
              array_push($paquetes, $busqueda['0']);
          }
          $this-&gt;set('paquetes',$paquetes);   
          #######Fin de La Carga######### 
  
  
  
      }
  
      function add(){
          if ($this-&gt;request-&gt;is('post')){
              //$this-&gt;Usuario-&gt;create();
  
              if ($this-&gt;Usuario-&gt;save($this-&gt;request-&gt;data)){
                  $this-&gt;Session-&gt;SetFlash('Usuario Nuevo Creado');
                  $this-&gt;redirect(array('action'=&gt;'index'),null,true);
              }else{
                  $this-&gt;Session-&gt;SetFlash('No se ha Agregado el Usuario, intente de Nuevo');
              }
          }
          $this-&gt;cargapaq();
          $this-&gt;cargamod();
      }
  </code></pre>
  
  <p><strong>add.ctp</strong></p>
  
  <pre><code>&lt;?php echo $this-&gt;Form-&gt;create('Usuario');?&gt;
  &lt;fieldset&gt;
      &lt;legend&gt;Añadir Nuevo Usuario&lt;/legend&gt;
      &lt;?php 
      echo $this-&gt;Form-&gt;input('nombre');
      echo $this-&gt;Form-&gt;input('apellido');
      echo $this-&gt;Form-&gt;input('email',array('label'=&gt;'Correo Electrónico'));
      echo $this-&gt;Form-&gt;input('password',array('label'=&gt;'Contraseña'));
      echo $this-&gt;Form-&gt;input('password2',array('label'=&gt;'Repita Contraseña', 'type'=&gt;'password'));
      echo $this-&gt;Form-&gt;input('paquete_id',array('label'=&gt;'Plan','empty'=&gt;'(Seleccione un Plan)'));
      echo $this-&gt;Form-&gt;input('modelo_id',array('label'=&gt;'Modelo de Teléfono','empty'=&gt;'(Seleccione un Modelo)'));
      echo $this-&gt;Form-&gt;input('nrotlf',array('label'=&gt;'Numero de Teléfono'));
      echo $this-&gt;Form-&gt;input('grupo_id',array('empty'=&gt;'(Seleccione un Rol)'));
      echo $this-&gt;Form-&gt;input('valido', array('checked'=&gt;'true'));
      ?&gt;
  &lt;/fieldset&gt;
  &lt;?php echo $this-&gt;Form-&gt;end('Enviar') ?&gt;
  &lt;?php echo $this-&gt;Html-&gt;link('Mostrar Todos Los Usuarios',array('action'=&gt;'index')); ?&gt;
  </code></pre>
  
  <p>i've seen the documentation but i can make the validation work</p>