2014-06-06 139 views
0

我有一个我正在创建的插件的注册表单。当我提交表格空白时,我得到的只是一个空白页面,验证不起作用。这是调用模型,因为我可以打破应用程序的错误。我认为它在$ validate数组中,但是看不到它。CakePhp表单验证不起作用

任何帮助,非常感谢。

下面是代码:

控制器的方法:

public function add() { 
if ($this->request->is('post')) { 
$this->User->create(); 
     if($this->User->save($this->request->data)){ 
     $this->set('title', 'Portal Home'); 
     $this->render('Parents.Portal/index'); 
     }else{ 
     $this->Session->setFlash('The user could not be saved. Please, try again.'); 
     } 
    } 
} 

用户模型:

<?php 
    App::uses('AppModel', 'Model'); 

    class User extends AppModel { 
    public $name = 'User'; 
    public $useTable = 'parents'; 

    public $validate = array(
     'email'=>array(
      'valid email'=>array(
       'rule'=>array('email'), 
       'message' => 'Please supply a valid email address.' 
       ), 
      'Not Empty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your email address.' 
       ), 
      'That email address has already been taken'=>array(
       'rule'=>array('isUnique'), 
       'message'=>'That email address has already been taken.' 
       ) 
      ), 
     'first_name'=>array(
      'Please enter your first name.'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your first name.' 
       ) 
      ), 
     'last_name'=>array(
      'Please enter your last name.'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your last name.' 
       ) 
      ), 
     'phone'=>array(
      'Please enter your phone number.'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your phone number.' 
       ) 
      ), 
     'password'=>array(
      'Not empty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your password' 
       ), 
      'Match passwords'=>array(
       'rule'=>'matchPasswords', 
       'message'=>'Your passwords do not match' 
       ) 
      ), 
     'password_confirmation'=>array(
      'Not empty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please confirm your password' 
       ) 
      ) 

     ); 

     public function matchPasswords($data) { 
    if ($data['password'] == $this->data['User']['password_confirmation']) { 
     return true; 
    } 
    $this->invalidate('password_confirmation', 'Your passwords do not match'); 
    return false; 
     } 

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

Lastly, the view: 

      <?php 
     echo $this->Form->create('User', array(
           'url' => array('controller' => 'register', 'action' => 'add'), 
           'type' => 'post', 'class' => 'form-horizontal', 'role' => 'form', 'novalidate'=>true) 
         ); 
     echo $this->Form->input('email', array('class' => 'form-control')); 
     echo $this->Form->input('first_name', array('class' => 'form-control')); 
     echo $this->Form->input('last_name', array('class' => 'form-control')); 
     echo $this->Form->input('phone', array('class' => 'form-control')); 
     echo $this->Form->input('password', array('class' => 'form-control')); 
     echo $this->Form->input('password_confirmation', array('type'=>'password', 'class' => 'form-control')); 
      echo $this->Form->end(array('label' => 'Register', 'class' =>"btn btn-lg btn-block ". $this->Buttons->color($account['Config']['theme']))); 
?> 
+0

什么是您的用户模型文件名? –

+0

这个名字是User.php –

+0

使用这个var $ validate而不是public $ validate。 你的表名是什么? –

回答

0

你需要阅读cakephp validation

public $validate = array(
     'email'=>array(
      'required'=>array(
       'rule'=>array('email'), 
       'message' => 'Please supply a valid email address.' 
       ), 
      'nonEmpty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your email address.' 
       ), 
      'unique'=>array(
       'rule'=>array('isUnique'), 
       'message'=>'That email address has already been taken.' 
       ) 
      ), 
     'first_name'=>array(
      'nonempty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your first name.' 
       ) 
      ), 
     'last_name'=>array(
      'nonEmpty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your last name.' 
       ) 
      ), 
     'phone'=>array(
      'nonEmpty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your phone number.' 
       ) 
      ), 
     'password'=>array(
      'nonEmpty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please enter your password' 
       ), 
      'required'=>array(
       'rule'=>'matchPasswords', 
       'message'=>'Your passwords do not match' 
       ) 
      ), 
     'password_confirmation'=>array(
      'nonEmpty'=>array(
       'rule'=>array('notEmpty'), 
       'message'=>'Please confirm your password' 
       ) 
      ) 

     ); 

如果你想在把名称你的英寸puts

echo $this->Form->input('email', array('label' => 'Please put your email','class' => 'form-control')); 
+0

感谢您的回复。复制了代码,但它仍然无效。 –