cakephp一种形式,多个模型,不显示一个模型的验证消息 [英] cakephp one form, multiple models, not displaying one model's validation messages
本文介绍了cakephp一种形式,多个模型,不显示一个模型的验证消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个注册表单,我在用户和身份表(用户有多个身份)创建一个记录
I have a registration form and I am creating a record in both User and Identity tables (a user hasMany identities)
表单看起来像这样
<?php echo $this->Form->create('User');?>
<fieldset>
<legend><?php __('Register'); ?></legend>
<?php
echo $this->Form->input('Identity.name');
echo $this->Form->input('Identity.surname');
echo $this->Form->input('User.username');
echo $this->Form->input('User.pass');
echo $this->Form->input('User.pass_confirm', array('type' => 'password'));
echo $this->Form->input('Identity.email');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
我得到 User的所有验证错误信息。
字段,但 Identity。*
字段不显示消息。
I get all the validation error messages for User.*
fields but Identity.*
fields are shown without messages.
验证规则:
身份:
var $validate = array(
'name' => array(
'notempty' => array(
'rule' => 'notempty',
'required' => true,
'message' => 'Your name is required.'
)
),
'surname' => array(
'notempty' => array(
'rule' => 'notempty',
'required' => true,
'message' => 'Your surname is required.'
)
),
'email' => array(
'validateEmail' => array(
'rule' => 'validateEmail',
'required' => true,
'message' => 'The email seems invalid.'
),
'notempty' => array(
'rule' => 'notempty',
'message' => 'You have to enter an email address.'
)
),
);
用户:
var $validate = array(
'pass' => array(
'required' => array(
'rule' => array('custom','/^.*[0-9].*$/i'),
'message'=>'Password must contain numbers'),
'length' => array(
'rule' => array(
'minLength',8),
'message' => 'Password must be at least 8 characters long')
),
'pass_confirm' => array(
'required' => array(
'rule' => 'notempty',
'message' => 'You have to confirm the password'
),
'length' => array(
'rule' => 'validatePassword',
'message'=>'Your passwords don\'t match!' )
),
'username' => array(
'unique' => array(
'rule' => 'validateUniqueUsername',
'message' => 'Username is already taken, please choose a different one.'
),
'notempty' => array(
'rule' => 'notempty',
'message' => 'You have to choose a username.'
)
),
);
推荐答案
hasMany
模型的字段应为数组(与父模型组合时) .0
在字段名称之间添加
hasMany
model's fields should be as array (when combined with parent model), see .0
added between field names
echo $this->Form->input('Identity.0.name');
echo $this->Form->input('Identity.0.surname');
...
echo $this->Form->input('Identity.0.email');
这篇关于cakephp一种形式,多个模型,不显示一个模型的验证消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文