我有一个登录表单。我想使用notempty()
规则验证字段。我想一次显示所有错误消息(字段a为空)。在我的情况下,这并不愉快。
我的代码是:
if(empty($this->data['Employee']['username'])){
$this->Employee->invalidate('username','Please Enter User Name');
}
else if(empty($this->data['Employee']['password'])){
$this->Employee->invalidate('password','Please Enter Password');
}
else if(empty($this->data['Employee']['project_id'])){
$this->Employee->invalidate('project_id','Please Select Any Project.');
$this->redirect(array('controller'=>'employees','action' => 'login'));
}
Login.ctp文件:
<?php echo $this->Form->create('Employee', array('action' => 'login'));?>
<h2>Login</h2> <div id="login-area">
<?php echo $this->Form->input('username',array('div'=>false,'id'=>'loginusername'));?>
<?php echo $this->Form->input('password',array('div'=>false,'type'=>'password','id'=>'password'));?>
<?php echo $this->Form->input('project_id',array('id'=>'projects','empty'=>'Select'));?>
<?php echo $this->Form->end(__('submit',true));?>
控制器功能:
function login(){
$this->layout = 'login'; //pr($this->data);exit;
if(isset($this->data['Employee'])){
if(empty($this->data['Employee']['username'])){
$this->Employee->invalidate('username','Please Enter User Name');
}
else if(empty($this->data['Employee']['password'])){
$this->Employee->invalidate('password','Please Enter Password');
}
else{
//$project_id = $this->data['Employee']['project_id'];
$result=$this->Employee->findByUsername($this->data['Employee']['username']);
$pwd=$result['Employee']['password'];echo $pwd;
$emp_id =$result['Employee']['id'];
if($pwd==md5($this->data['Employee']['password'])){
//$this->Session->write('project_id',$project_id);
$this->Session->write('emp_id',$emp_id);
$this->redirect(array('action' => 'index'));
}
else{
$this->Session->setFlash(__('Please enter valid username And password to login', true));
}
}
}
如何在提交表单时一起显示所有错误消息?
答案 0 :(得分:2)
如果你在控制器中验证应该是这样的。
if(empty($this->data['Employee']['username'])){
$this->Employee->invalidate('username','Please Enter User Name');
}
if(empty($this->data['Employee']['password'])){
$this->Employee->invalidate('password','Please Enter Password');
}
if($this->Employee->validates()) {
// do your login stuff
}
答案 1 :(得分:0)
你应该在你的Model类中进行验证,CakePHP可以开箱即用。
使用CakePHP表单帮助器在视图中呈现输入框,并在提交无效表单时自动呈现错误消息。
在此处查看有关模型验证的详细信息:http://book.cakephp.org/2.0/en/models/data-validation.html
E.g。在您的模型类
中public $validate = array(
'username' => array(
'rule' => 'notEmpty',
'message' => 'Please enter username'
)
);
在您的视图中(在以$this->Form->create()
开头的表单内)
<?php echo $this->Form->input('username'); ?>