Cakephp表单从不在应该验证的时候进行验证

Cakephp表单从不在应该验证的时候进行验证,php,validation,cakephp,Php,Validation,Cakephp,好的,我有一些工作要做。它没有验证什么时候应该验证,这似乎与我在谷歌上发现的每个问题都相反。我尝试过从CakePHP文档中复制精确的代码,但似乎不起作用。也许这里有人能找到答案 型号: <?php App::uses('AppModel', 'Model'); class User extends AppModel { public $validate = array( 'email' => array(

好的,我有一些工作要做。它没有验证什么时候应该验证,这似乎与我在谷歌上发现的每个问题都相反。我尝试过从CakePHP文档中复制精确的代码,但似乎不起作用。也许这里有人能找到答案

型号:

<?php

    App::uses('AppModel', 'Model');

    class User extends AppModel {

        public $validate = array(
            'email' => array(
                'rule' => 'email',
                'required' => true,
                'allowEmpty' => false
            ),
            'full_name' => array(
                'rule'     => 'alphaNumeric',
                'required' => true,
                'allowEmpty' => false
            ),
            'password' => array(
                'rule' => array('minLength', 8),
                'required' => true,
                'allowEmpty' => false
            )
        );

    }

?>

控制器:

<?php

    App::uses('AppController', 'Controller');


    class UsersController extends AppController {

        function login() {
            $this->layout = 'signin';
        }

        function signup() {
            $this->layout = 'signin';

            if($this->request->is('post')) {

                $this->User->set($this->request->data);

                if($this->User->validates())
                    $this->Session->setFlash('Validated!');
                else
                    $this->Session->setFlash('Did not validate!' . print_r($this->User->validationErrors, true) . print_r($this->request->data, true));
            }
        }
    }

?>

视图:


创建帐户
任何方向正确的帮助都将受到感谢。我一直在使用CakePHP进行验证时遇到问题,所以我以前从未使用过它。现在它是必需的,所以我别无选择,只能苦干直到它工作

哦,我应该注意到数据确实通过了。以下是打印功能的结果:

没有验证!数组([full_name]=>数组([0]=>此字段) 不能为空)[password]=>数组([0]=>此字段不能为空 留空)数组([用户]=>数组([全名]=>肖恩 Templeton[电子邮件]=>sean@
*********
.com[密码]=>
*********
[确认密码]=>
*********
))


请通过这个链接。它解释了cakephp验证是如何工作的

更新:


您的全名验证具有不包含空格的“规则”=>“字母数字”。但是如果你检查你的数据[全名]=>Sean Templeton,其中有一个空格


您可以在模型中设置自己的消息。我想我没必要这么说。

在你的控制器上试试这个

function signup() {
     $this->layout = 'signin';
     if ($this->request->is('post')) {
         $this->User->create($this->request->data); //"create" instead of "set"
         if ($this->User->validates())
             $this->Session->setFlash('Validated!');
         else
             $this->Session->setFlash('Did not validate!' . print_r($this->User->validationErrors, true) . print_r($this->request->data, true));
        }
    }
}

我…你没读我的帖子吗?我不仅读了它,还从中复制了代码。我就是不能让它工作。检查一下动作。我没有看到表单中设置了任何操作。如何编写调用注册操作的代码?CakePHP会自动使用正确的操作创建表单。具体地说,它输出这样的信息:
我不想听起来粗鲁,但你对CakePHP了解多少吗?是的,你很粗鲁,但没问题。我最近开始做蛋糕。所以我知道的不多。我接受这一点。但是,我正试图帮助您。您的全名验证具有“规则”=>“字母数字”,其中不包括空格。但是如果你检查你的数据[全名]=>Sean Templeton,其中有一个空格。我希望这次我没有错。
function signup() {
     $this->layout = 'signin';
     if ($this->request->is('post')) {
         $this->User->create($this->request->data); //"create" instead of "set"
         if ($this->User->validates())
             $this->Session->setFlash('Validated!');
         else
             $this->Session->setFlash('Did not validate!' . print_r($this->User->validationErrors, true) . print_r($this->request->data, true));
        }
    }
}