表单验证cakephp示例

表单验证cakephp示例,php,forms,validation,cakephp,cakephp-2.3,Php,Forms,Validation,Cakephp,Cakephp 2.3,请大家举一个cakephp中验证表单的例子,因为我有cakephp 2.3.3,无法验证表单,无法识别我的模型Usuario usuario车型 public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { $this->data[$this->alias]['password'] =

请大家举一个cakephp中验证表单的例子,因为我有cakephp 2.3.3,无法验证表单,无法识别我的模型Usuario

usuario车型
    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    };

    public $validate = array(
        'nombre' => array(
            'sololetras' =>array(
                'rule' => '/^[a-z]$/i',
                'message' => 'Solo se Permite Letras en este Campo'
            ),          
            'required'=> true,
            'allowEmpty' => false,

        ),

        'apellido' => array(
            'allowEmpty' => false,
            'required'  => true,

        ),

        'email' => array(
            'email' => array(
                'rule' => 'email',
                'message' => 'El nombre de usuario debe ser una dirección de email válida.'
            ),
            'allowEmpty' => false,
            'required'  => true,
        ),

        'nrotlf' => array(
            'rule' => array('phone', null, 'us')
        )
    );
}

?>
UsuarioController

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    };

    public $validate = array(
        'nombre' => array(
            'sololetras' =>array(
                'rule' => '/^[a-z]$/i',
                'message' => 'Solo se Permite Letras en este Campo'
            ),          
            'required'=> true,
            'allowEmpty' => false,

        ),

        'apellido' => array(
            'allowEmpty' => false,
            'required'  => true,

        ),

        'email' => array(
            'email' => array(
                'rule' => 'email',
                'message' => 'El nombre de usuario debe ser una dirección de email válida.'
            ),
            'allowEmpty' => false,
            'required'  => true,
        ),

        'nrotlf' => array(
            'rule' => array('phone', null, 'us')
        )
    );
}

?>
<?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->loadModel('Paquete');
        $paquetes = $this->Paquete->find('list', array('fields'=>'Paquete.id, Paquete.nombre'));
        //debug($paquetes);
        $this->set(compact('paquetes'));
    }

    function cargamod(){  //Carga la lista de la tabla Modelo
        $this->loadModel('Modelo');
        $modelos = $this->Modelo->find('list', array('fields'=>'Modelo.id, Modelo.nombre'));
        //debug($modelos);
        $this->set(compact('modelos'));
    }

    function index(){
        $usuarios = $this->Usuario->find('all',array(
            'fields'=>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'=>'Usuario.valido=true',
            'order'=>'Usuario.apellido ASC')
        );
        $this->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->loadModel('Modelo');
        for ($i=0; $i < count($idmod); $i++) { 
            $busqueda = $this->Modelo->find('all', array('fields'=>'Modelo.nombre', 'conditions'=>"Modelo.id=$idmod[$i]"));
            array_push($modelos, $busqueda['0']);
        }
        $this->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->loadModel('Paquete');
        for ($i=0; $i < count($idpaq); $i++) { 
            $busqueda = $this->Paquete->find('all', array('fields'=>'Paquete.nombre', 'conditions'=>"Paquete.id=$idpaq[$i]"));
            array_push($paquetes, $busqueda['0']);
        }
        $this->set('paquetes',$paquetes);   
        #######Fin de La Carga######### 



    }

    function add(){
        if ($this->request->is('post')){
            //$this->Usuario->create();

            if ($this->Usuario->save($this->request->data)){
                $this->Session->SetFlash('Usuario Nuevo Creado');
                $this->redirect(array('action'=>'index'),null,true);
            }else{
                $this->Session->SetFlash('No se ha Agregado el Usuario, intente de Nuevo');
            }
        }
        $this->cargapaq();
        $this->cargamod();
    }

新乌萨里奥

我已经看过文档,但我可以进行验证,我解决了问题。。是模型的名称,没有识别验证

当你说“不起作用”时,它会给你一个错误,还是不会验证并按原样保存到数据库?我尝试了“调试($this->Usuario->validationErrors)”,并在你的控制器中返回一个空数组和
调试($this->Usuario->invalidFields())
?相同的空数组?作为一个说西班牙语的人,我有一个建议:试着从验证文本中删除所有口音,因为某些原因,如果你有类似“dirección”的东西,验证就不起作用了。。。从未真正调查过原因……我会试试,稍后再评论