蛋糕php表单验证对我不起作用

时间:2013-04-16 06:29:42

标签: cakephp validation

我有一个表单,它在cakephp中添加了user的first_name和last_name。 这是代码

视图代码(add.ctp

<?php 
echo $this->Form->create('User');
echo $this->Form->input('first_name',array('label'=>'First Name'));
echo $this->Form->input('last_name',array('label'=>'Last Name'));           
echo $this->Form->end('Add User');
?>

UserController的代码(UsersController.php

<?php
     public function add(){
          if($this->request->is('post')){
               $addData = $this->request->data;
               $this->User->create();       
               if($this->User->save($addData)){
                  $this->Session->setFlash('User has been added successfully');
                  $this->redirect(array('action'=>'index'));            
               }            
          }
     }    
?>

查看用户模型代码(UserModel.php

<?php
  class UserModel extends AppModel{
   public $validate = array(
     'first_name' => array(
          'rule'    => 'notEmpty',
          'message' => 'first name should not be empty.'
      ),
     'last_name' => array(
         'rule'    => 'notEmpty',
         'message' => 'last name should not be empty.'
      )
   );   
}
?>

这是我正在使用的代码,我在cakebook上也看过并使用了其他各种规则,但没有验证适用于我的表单。请问有什么可以帮助我的原因是什么? 提前致谢!

3 个答案:

答案 0 :(得分:5)

您的模型文件名不正确。它应该是User.php而不是UserModel.php

答案 1 :(得分:1)

如果您在mysql中使用表名作为用户而不是user.php

,请将您的文件名更改为UserModel.php

并且您的类名必须如下所示

<?php
  class User extends AppModel{

    var $name = 'User';

   public $validate = array(
     'first_name' => array(
          'rule'    => 'notEmpty',
          'message' => 'first name should not be empty.'
      ),
     'last_name' => array(
         'rule'    => 'notEmpty',
         'message' => 'last name should not be empty.'
      )
   );   
}
?>

答案 2 :(得分:0)

您的型号名称应为User(因为您的表名和控制器名称是用户)。 所以在您的模型文件(User.php)中尝试这个

<?php
App::uses('AppModel', 'Model');
class User extends AppModel{
public $validate = array(
 'first_name' => array(
      'rule'    => 'notEmpty',
      'message' => 'first name should not be empty.'
  ),
 'last_name' => array(
     'rule'    => 'notEmpty',
     'message' => 'last name should not be empty.'
  )

);
}