1

我在我的管理面板登录中进行模型验证,所以只有两个字段用户名和密码。验证正常,但未显示我在模型中编写的自定义消息。

模型

public $validate = array(
    'username' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Please Enter Your Username'
        )
    ),
    'password' => array(
        'required' => array(
            'rule' => array ('notEmpty'),
            'message' => 'Please Enter Your Password'
        )
    )
);

控制器

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

    if ($this->request->is('post')) {         
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        }
        $this->Session->setFlash(__('Invalid username or password, try again'));
    }
}

看法

echo $this->Form->create('Admin',array('autocomplete'=>"off"));

echo '<div style="width:294px;float:left;position:relative;">';
echo $this->Form->input('username' , array('label' => '', 'placeholder' =>'Enter your username','div' => false));
echo $this->Form->input('password' , array('label' => '', 'value' =>'', 'div' => false,'placeholder'=>'Enter Your Password'));
echo '</div>';
echo '<div style="padding-left:0px;">'; 

echo $this->Form->end(__('Login' ,true));   

在此处输入图像描述

我已经尝试了一些类似此链接中提到的东西,但它对我不起作用。

CakePHP:验证消息不显示

4

3 回答 3

0

您收到该消息是因为“用户名”字段被标记为“必需”。也许您没有在 Form->input() 函数中定义它,但是“必需”标志已从模型中自动添加(由于您的验证规则)。正如 timstermatic 所说,这是由 required 属性引起的浏览器验证消息。

要解决此问题(并显示 CakePHP 验证消息),您必须强制避免在您的字段上添加“必需”标志:

$this->Form->input('username', array('required' => FALSE));

这将覆盖模型自动添加。快乐编码;)

*Edited => 重要的是要澄清内联覆盖仅删除字段上所需的标志:无论如何您都将利用模型验证(只是因为如果将空字段发送到服务器,它将不会通过验证您输入的规则。

于 2013-09-02T18:38:28.703 回答
0

保留此代码,它将绕过 html5 验证并添加您的自定义验证

看法 echo $this->form->create('Post',array('action'=>'add'));
echo $this->form->input('title'); echo $this->form->input('body'); echo $this->form->submit('Save Post',array('formnovalidate'=>true)); echo $this->form->end();//Creates ending form tag

模型 var $validate=array(
'title'=>array(
'title_must_not_be_empty'=>array('rule'=>'notEmpty','message'=>'Please enter a title),
'title_must_be_unique'=>array('rule'=>'isUnique','message'=>'Title name already exists') ),
'body'=>array( 'body_must_not_be_empty'=>array( 'rule'=>'notEmpty', 'message'=>'Please enter body' ) ) );

这将按照您想要的方式工作

于 2014-08-31T08:46:30.203 回答
0

这看起来像是来自浏览器而不是 CakePHP 的消息。

CakePHP 现在添加了现代浏览器可以用来触发错误的必需属性。

你可以在这里做三件事之一:

一:设置表单以将验证留给服务器:

 $this->Form->create(array('novalidate'=>true));

二:在浏览器中设置自定义验证消息:http: //www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-cva-setcustomvalidity

三:忍

于 2013-08-28T10:21:55.983 回答