我在管理员面板登录中进行模型验证,因此只有两个字段的用户名和密码。验证工作正常,但我在模型中编写的自定义消息未显示。
模型
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));
我已经尝试过这个链接中提到的一些内容,但它对我不起作用。
答案 0 :(得分: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
三:容忍它
答案 1 :(得分:0)
您收到该消息是因为“用户名”字段被标记为“必需”。也许您没有在Form-&gt; input()函数中定义它,但是已经从模型中自动添加了“required”标志(由于您的验证规则)。正如timstermatic所说,这是由必需属性引起的浏览器验证消息。
要解决此问题(并显示CakePHP验证消息),您必须强制避免在您的字段上添加“必需”标记:
$this->Form->input('username', array('required' => FALSE));
这将覆盖模型自动添加。快乐的编码;)
*已编辑=&gt;重要的是要澄清内联覆盖仅删除字段上所需的标志:无论如何,您将利用模型验证(仅因为如果向服务器发送空字段,它将不会传递您输入的验证规则。
答案 2 :(得分: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'
)
)
);
这将按你想要的方式工作